2013-05-09 95 views
19

git book设置没有“快进”为默认值:如何使用时混帐合并

你会发现在合并时出现了“快进”。由于您合并的分支指向的提交直接位于提交的上游,因此Git会将指针向前移动。换句话说,当你试图合并一个提交和一个可以通过第一个提交的历史记录到达的提交时,Git通过向前移动指针来简化事情,因为没有不同的工作要合并在一起 - 这被称为“快进“。

但是,这种“快进”的副作用是,如果您有一个具有多个提交的功能分支,则当您合并回主设备时,将丢失功能的历史上下文。换句话说,提交不会作为此功能的一部分组合在一起。

with fast forward:  x---x---x---x---x---x---x 

without fast forward: x---x---x   x---x---x---x 
           \x--x--x/ 

手动方式是git merge --no-ff

有谁知道如何设置为默认?

回答

35

设置配置变量merge.fffalse

git config --global merge.ff false 

(无--global限制影响到当前项目)

+0

链接到相关的Git文档:http://git-scm.com /文档/ GIT-配置。 – 2013-05-09 04:22:22

+4

,但请注意'git pull'(不带--rebase)正在进行合并,因此会创建一个(通常不需要的)合并提交。 – michas 2013-05-09 08:50:09

+0

奇怪的是,当我“混帐mybranch”时,它不会快进,即使有可能。当我使用--ff选项时,它快速前进。奇怪的是,merge.ff似乎没有在任何级别关闭,所以--no-ff似乎是我的默认行为。但--ff应该是默认值:https://git-scm.com/docs/git-merge#git-merge---ff。任何人有任何线索? – Sean 2017-04-27 20:49:53