git 的 merge 与 no-ff merge 的不同之处

通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

证明

仓库只有一个文件readme.txt,仅有一个主分支master

  1. 新建分支dev1,修改readme.txt,然后在dev1分支下提交
git switch -c dev1
git add readme.txt
git commit -m "dev1 branch commit"
  1. 回到master分支,执行mergegit merge dev1
git switch master
git merge dev1
  1. 删除分支
git branch -d dev1
  1. 查看日志
git log --graph --pretty=oneline --abbrev-commit
  1. 新建分支dev2,修改readme.txt,然后提交
git switch -c dev2
git add readme.txt
git commit -m "dev2 branch commit"
  1. 回到master分支,执行merge
git switch master
git merge --no-ff -m "dev2 merged with mo-ff" dev2
  1. 删除分支
git branch -d dev2
  1. 查看日志即
git log --graph --pretty=oneline --abbrev-commit
  1. 比较两次合并,可以看出不同之处,no-ff的模式会记录分支历史
文档更新时间: 2019-11-04 12:50   作者:如默