2013-01-08 28 views
0

所以我有以下回購:N1 - > N2 - > N3 - >主機和N2 - > N4如何在3路合併中忽略註釋?

我想用git合併N4回主,所以AFIAK:

BASE = N2,LOCAL = N3,REMOTE = N4,並且合併=主

我使用p4merge以可視化的合併,但現在的問題....

N2和N4註釋掉的代碼段是正在緩慢地被註釋在主...但是視覺合併是完全搞砸了...似乎任何評論線可以匹配任何其他評論升ine ......導致各種不匹配,其中註釋的函數被匹配到其他代碼的中間。例如

LOCAL:

def foo 
    impl foo 
end 

def bar 
    impl bar 
end 

BASE/REMOTE:

# def foo 
# impl foo 
# end 
# 
# def bar 
# end 

合併:將

def foo 
    impl foo 
    # def bar 
    # end 
end 

不用說了,我不想要的代碼合併這樣的。

我讀過關於git中的自定義合併驅動程序,但我不知道如何設置它們......這個想法是,如果diff工具可以忽略註釋字符,我可能會得到更好的差異分析暫時(同時分配),然後正確排列。我試圖在p4merge中找到一個設置來做到這一點,但沒有運氣。在kdiff3中也可能有一種方法,但我想我會嘗試找出一種方法來首先使用合併驅動程序來完成它。

有關設置或其他方法來解決這個問題的任何意見,將不勝感激!謝謝!

+0

也許你應該考慮使用另一個(更好:X)差異/合併工具?無論如何,你的情況似乎很好奇,因爲合併'n2 - > n4'到'n1 - > n2'導致快進,所以沒有衝突的可能。 – KingCrunch

+0

我的意思是說,在n2,我分支到n4,然後繼續工作在主和承諾(編輯:添加n3以上desc)。現在我正試圖將n4重新合併到master中,所以在這種情況下它不是快進的。這真的是一個合併的熊,我試圖通過評論舊版本的代碼來移植應用程序,然後有選擇地取消註釋並在新版本中進行測試。然而,舊版本已經開始,需要對舊版本進行評論,然後將所有更改合併到新版本中。我正在尋找答案。 –

+0

明天我會嘗試kdiff3,看看它是否做得更好。 –

回答

1

有一點可以幫助的是合併策略選項patience。它在不損害代碼的情況下做得更好,並且報告越來越少的合併衝突。它與'git merge --strategy-option = patience`一起使用。

討論git diff上下文中的選項的另一個問題是What is 'git diff --patience' for?

當然,該選項在合併的手冊頁中描述,git merge manual page