最强参考:廖雪峰git教程
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
git安装 (windows)
在 https://git-for-windows.github.io/ 或者 https://pan.baidu.com/s/1kU5OCOB#list/path=%2Fpub%2Fgit 上下载msysgit,
安装完成后,在开始菜单里找到 “Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明 Git 安装成功!
安装完成后,还需要最后一步设置,在命令行输入:
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
git初始化
新建一个空文件夹,通过上面的msysgit进入当前文件夹,然后使用如下命令创建git空间
git init
为了不必要的麻烦,请使用UTF-8 编码
git添加文件
首先在上述的文件夹下新建一个文件 testGit.txt
内容如下:
Git is a version control system.
Git is free software.
使用 git add将上述文件添加到仓库
git add testGit.txt
然后提交,并且附加上传信息
git commit -m "wrote a testGit file"
其中-m后面的信息是注释信息,上传文件到仓库一共包括两步,
git add file
git commit -m "add a file"
可以多次add一次commit
git查看当前文件状态
git status
git查看文件和之前上传的不同
git diff
绿色的是文件中修改的内容
查看文件提交历史版本信息
git log
简化输出可以使用
git log --pretty=oneline
前面的一大串数字就是git的版本号,版本号是递增的
git版本回退
在 Git 中,用HEAD表示当前版本,上一个版本就是HEAD,上上一个版本就是HEAD^,当然往上 100 个版本写 100 个^比较容易数不过来,所以写成HEAD~100
使用reset命令进行版本回退
git reset --hard HEAD^
此时的版本为上一个版本的信息
这时得到的第二个版本的信息,此时如果想回到第三版怎么办呢,这时在刚才没关闭的窗口中,找到刚才git log的第三个版本的版本号,然后输入
git reset --hard 2ab95bc82af650eefa29af39cf2062a0f13fe34e
这时候就回到了第三个版本的文件
git版本回退进阶
如果关掉了当前窗口,找不到版本号了,那如何从第二版本进入第三版本呢,这时还必须找到第三个版本的commit id,通过使用命令git reflog来完成
找到第三个版本添加 GPL的commit Id 2ab95bc
然后
git reset --hard 2ab95bc
工作区 、 缓存区、 版本库 关系
每次git commit之前必须先git add,不然如果没有add,内容没有在缓冲区就不会被添加到版本库
丢弃工作区的修改
如果在工作区修改了文件,还没有git add,这时候并不需要这些修改,可以使用git checkout丢掉工作区的修改
git checkout -- testGit.txt
丢掉缓存区的修改
如果在工作区修改了文件,也提交到了缓存区,不过没有提交到版本库,可以使用git reset回退到刚才在缓存区的修改
git reset HEAD testGit.txt
此时,刚才提交到缓存区的内容就丢掉了,然后再使用上面的git checkout 命令丢掉工作区的修改就好了
git分支branch
git创建分支
$ git checkout -b dev
Switched to a new branch 'dev'
等价于
$ git branch dev
$ git checkout dev
Switched to branch 'dev'
查看当前分支
git branch
切换到其他分支
$ git checkout master
Switched to branch 'master'
合并分支
git merge dev
# 将 dev部分分支和master部分合并
删除分支
git branch -d dev
远程仓库
1、创建SSH Key
ssh-keygen -t rsa -C "[email protected]"
产生id_rsa和id_rsa.pub这两个文件,分别是私钥、公钥
2、登陆 GitHub,打开 “Account settings”,“SSH Keys” 页面:
然后,点 “Add SSH Key”,填上任意 Title,在 Key 文本框里粘贴id_rsa.pub
文件的内容:
点 “Add Key”,你就应该看到已经添加的 Key:
3、添加远程库
在github上找到 “Create a new repo” 按钮,创建一个新的仓库,在 Repository name 填入版本库的名字如learngit2,其他保持默认设置,点击 “Create repository” 按钮,就成功地创建了一个新的 Git 仓库
4、本地与github版本库关联
在本地的learngit2仓库下运行命令,这样就将本地的learngit2文件夹和github的版本库相关联了
git remote add origin [email protected]:minning/learngit2.git
其中 minning 是自己的名字
5、推送本地库到github
把本地库的所有内容推送到远程库上
git push -u origin master
把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git 不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
推送成功后,可以立刻在 GitHub 页面中看到远程库的内容已经和本地一模一样
以后进行推送,使用如下命令就可以了
git push origin master
5-2、题外:如果新建仓库repository TargetOffer时添加了README或者License,在本地执行git push -u origin master会报 error: failed to push some refs to ' 错误
此时应该执行下面的命令:
git remote set-url origin [email protected]:minning/TargetOffer.git
git remote add github [email protected]:minning/TargetOffer.git
git remote set-url origin [email protected]:minning/TargetOffer.git
从远程库克隆
从远程库将内容克隆回本地
1、在github上新建一个repository仓库,仓库名字为gitskill2,此时远程仓库就准备好了
2、在本地找到一个放代码的地方
git clone https://github.com/minning/gitskill2
其中minning是个人id,gitskill2是仓库名字,通过这一行命令就将远程的仓库clone到了本地