merge 和 no-ff merge的不同之处
原创2019年3月1日大约 1 分钟
通常,合并分支时,如果可能,Git
会用Fast forward
模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用Fast forward
模式,Git
就会在merge
时生成一个新的commit
,这样,从分支历史上就可以看出分支信息。
简单的来说,ff 模式会将分支历史整理成一条支线,看不出合并的分支信息,但 no-ff 模式会显示一个分叉节点,这时就可以看到合并分支的信息。
说明
前提条件:仓库只有一个文件 readme.txt,仅有一个主分支 master
1.新建分支dev1
,修改readme.txt
,然后在 dev1 分支下提交
git switch -c dev1
git add readme.txt
git commit -m "dev1 branch commit"
2.回到master
分支,执行merge
即git merge dev1
git switch master
git merge dev1
3.删除分支
git branch -d dev1
4.查看日志
git log --graph --pretty=oneline --abbrev-commit
5.新建分支dev2
,修改readme.txt
,然后提交
git switch -c dev2
git add readme.txt
git commit -m "dev2 branch commit"
6.回到master
分支,执行merge
git switch master
git merge --no-ff -m "dev2 merged with mo-ff" dev2
7.删除分支
git branch -d dev2
8.查看日志
git log --graph --pretty=oneline --abbrev-commit
9.比较两次合并,可以看出不同之处,no-ff
的模式会记录分支历史