本文引用自:​​https://www.it1352.com/2098510.html​

当我从另一个分支到当前工作空间执行git merge时,git有时会进行新的提交:

Merge remote-tracking branch xxx into xxx

有时候,它不会:

Fast-forward
... src files ...

那是什么决定是否应该创建提交?

解决方案

所谓的"快速转发"合并不会产生提交,而其他合并(通常称为"章鱼合并"(现在您知道为什么) github的吉祥物是octocat))产生提交.

基本上,当您的分支没有分歧时,就会发生快进.

说您要在master分支中合并分支foo.如果这些分支没有分歧,那么您将拥有这样的历史记录(每个*代表一个提交):

*---* (master)
\
*---*---* (foo)

在这种情况下,合并是快进,因为(根据图论,这是git图的基础),可以从foo到达master.换句话说,您只需要将master引用移至foo,就可以完成:

*---*
\
*---*---* (master, foo)

当分支分叉时:

*---*---* (master)
\
*---*---* (foo)

您必须创建一个"联接"两个分支的提交:


*---*---*-------* (master)
\ /
*---*---* (foo)

箭头所指的提交是合并提交,并且具有两个父提交(以前的master分支提示和当前的foo分支提示).

请注意,您可以使用--no-ff选项强制Git为快速转发合并创建合并提交.