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

简单的来说,ff模式会将分支历史整理成一条支线,看不出合并的分支信息,但no-ff模式会显示一个分叉节点,这时就可以看到合并分支的信息。

说明

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

1.新建分支dev1,修改readme.txt,然后在dev1分支下提交

  1. git switch -c dev1
  2. git add readme.txt
  3. git commit -m "dev1 branch commit"

2.回到master分支,执行mergegit merge dev1

  1. git switch master
  2. git merge dev1

3.删除分支

  1. git branch -d dev1

4.查看日志

  1. git log --graph --pretty=oneline --abbrev-commit

5.新建分支dev2,修改readme.txt,然后提交

  1. git switch -c dev2
  2. git add readme.txt
  3. git commit -m "dev2 branch commit"

6.回到master分支,执行merge

  1. git switch master
  2. git merge --no-ff -m "dev2 merged with mo-ff" dev2

7.删除分支

  1. git branch -d dev2

8.查看日志

  1. git log --graph --pretty=oneline --abbrev-commit

9.比较两次合并,可以看出不同之处,no-ff的模式会记录分支历史