2013-05-09 92 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