本文引用自: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为快速转发合并创建合并提交.