2011-12-13 71 views
18

我用3路合併工作像BC3,SourceGear或P4工具通常顯示4個組成部分:基地離開,並合併結果Git的4路合併

什麼的Git似乎做,這是正確的尤其是在git rebase --onto的情況下,似乎是一個4路合併:左基地離開右基地合併結果。或者換句話說,在左邊(本地)端完成diff補丁,並試圖將它與在右邊(遠端)完成的diff補丁合併。

合併=左的Diff-路徑+右鍵DIFF路徑

你會知道什麼好工具,可以顯示這些4個組成部分,如果有任何這種支持越來越大呢?

回答

2

我不認爲有人存在。我一直聽說BC3和P4Merge是最好的。

+0

你能否介紹P4Merge例如如何可能被用來作爲問題描述合併4文件版本任何澄清,如果這是可能的嗎?我發現自己希望將一個分支中的更改合併到另一個分支中,該分支從第一個分支開始分支後經歷了自己的更改。我知道如果您簽入代碼,Team Foundation Server可以自動執行此操作(對於大多數方而言),但是在我有時檢查任何內容之前,我想這樣做。 – BlueMonkMN

+0

這不是問的問題。如果你想合併4種變體,你可以用章魚合併'git merge branch1 branch2 branch3 branch4'。如果您遇到衝突,章魚合併將中止,您不能解決超過2個版本衝突。也就是說,您可以一次將它們中的每一個合併爲一個。然後壓扁所有合併到第一個。通過將您在不同行上合併的分支的提示的所有SHA1寫入'.git/MERGE_HEAD',您可以保留章魚合併工作的父母。現在當你提交時,你生成的提交將會有你想要的4個父母。 –

+0

經過進一步的研究,我瞭解到我對3路合併的理解一定是困惑的,而我真正需要的只是對我而言的一個簡單的3路合併。對困惑感到抱歉。我想當我有兩個分支,一個通用的版本,一個分支的修改版本,我想合併到另一個分支,我需要的不僅僅是一個3路合併,但我沒有。我可以簡單地忽略通用版本,並且在我的情況下,這些工作非常棒。 – BlueMonkMN

2

diffuse似乎默認我Fedora17的工作站上安裝;這也恰好是在某種程度上默認的,因爲我沒有在我的.gitconfig指定任何內容,還是:

git mergetool 

剛剛打開它,馬上顯示爲編輯正確的文件。

MELD似乎能夠處理它,以及,我必須安裝它,並期待更好。

+1

不知道爲什麼我的答案被拒絕。 Diffuse確實顯示4路合併。也加入Meld。 – Sanne

+2

屏幕截圖顯示4路diff/merge的機會嗎?我只看到diffuse/meld是雙向的。 –

+1

好吧,它看起來像'diffuse' *將*做一個任意的方式差異,但只對單個文件。 –