Git Cheatsheet Part 2: Command and Branches
Table of Contents
添加和提交
添加一个文件到仓库 1
git add <file>
1
git add .
1
git commit -m "message"
1
git commit -am "message"
分支
查看所有本地分支 1
2当前的分支前会有一个`*`
git branch1
git branch -r
1
git branch -a
1
git branch <branch-name>
1
git checkout <branch-name>
1
git checkout -b <branch-name>
1
git branch -d <branch-name>
1
git branch -D <branch-name>
1
git tag <tag-name>
合并分支
合并分支a到分支b,有两种模式,第一种是禁用Fast
forward模式,参数为--no-ff
,合并后的历史有分支,能看出曾经做过合并
1
git merge --no-ff -m "message" <branch-name>
--ff
,合并后历史会变成一条直线。原来是直接将仓库里的HEAD指针指向要merge的分支上。
1
git merge --ff -m "message" <branch-name>
--squash
,是用来把一些不必要commit进行压缩,比如说,你的feature在开发的时候写的commit很乱,那么我们合并的时候不希望把这些历史commit带过来,于是使用–squash进行合并。
1
git merge --squash <branch-name>
Rebase
Rebase操作可以将本地未push的分支提交历史整理成直线,假设当前有两个分支,master和feature。
官方原文解释为:当执行rebase操作时,git会从两个分支的共同祖先开始提取待变基分支上的修改,然后将待变基分支指向基分支的最新提交,最后将刚才提取的修改应用到基分支的最新提交的后面。
具体操作如下图: 当执行rebase命令时:
1
2git checkout feature
git rebase master
结合例子看一下官方原文:当在feature分支上执行git rebase
master时,git会从master和featuer的共同祖先B开始提取feature分支上的修改,也就是C和D两个提交,然后将feature分支指向master分支的最新提交上,也就是M。最后把提取的C和D接到M后面
注意:这里的将C和D接到M后面的接法,会依次拿M和C、D内容分别比较,处理冲突后生成新的C’和D’
为什么叫rebase? feature分支是基于master分支的B拉出来的分支,feature的基底是B。而master在B之后有新的提交,就相当于此时要用master上新的提交来作为feature分支的新基底。
Git Cheatsheet Part 2: Command and Branches