参考自 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
1.初始化一个Git仓库,使用git init命令。
git init
2.添加文件到Git仓库,分两步:
第一步,使用命令git add <file> 可反复多次使用,添加多个文件;
git add readme.txt
第二步,使用命令git commit,完成。
git commit -m "add a new file"
3.git status命令可以让我们时刻掌握仓库当前的状态
git status
4.git diff 这个命令看看文件变化
git diff readme.txt
5.git log命令显示从最近到最远的提交日志
6.版本回退
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
git reset --hard HEAD^
或者
git reset --hard 3628164
版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。
7.Git提供了一个命令git reflog用来记录你的每一次命令:
8.git checkout -- file可以丢弃工作区的修改:
git checkout -- readme.txt
9.场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
10.删除文件:
一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit:
现在,文件就从版本库中被删除了。
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
如果是rm删除,可以
$ git checkout -- test.txt
如果是git rm删除,则需要使用git reset HEAD <文件>撤出暂缓区,再使用git checkout -- test.txt恢复文件
11.分支管理
创建分支
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
12.解决冲突
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
在两个分支上分别提交了不同的版本,再合并时会出现冲突
Git告诉我们,readme.txt文件存在冲突,必须手动解决冲突后再提交。git status也可以告诉我们冲突的文件
我们可以直接查看readme.txt的内容
修改之后再提交
用带参数的git log也可以看到分支的合并情况:
git log --graph --pretty=oneline --abbrev-commit
13.分支策略
在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master
分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev
分支上,也就是说,dev
分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev
分支合并到master
上,在master
分支发布1.0版本;
你和你的小伙伴们每个人都在dev
分支上干活,每个人都有自己的分支,时不时地往dev
分支上合并就可以了。