2011-01-07 34 views

回答

2

您可以提交正在進行的工作並將其推送到臨時分支中的服務器上。但要做到這一點,你必須提交衝突標記文件(git add . ; git commit)。我建議你不要這樣做,因爲當你重新合併時很容易錯過其中一個衝突的地方。您也可以嘗試壓縮正在進行的合併(git squash save),但我不知道是否可以在服務器上推送一個壓扁參考。

另一種替代方法是嘗試在較小的塊中拆分複雜合併,並推送每個中間合併。

對於爲例,如果您有以下病史:

*---*---*---*---*---*---*---*---*---A 
    \ 
    \--*---0---1---2---3---4---5---B 

並嘗試合併B插入A,您可以通過先合併0,然後1,然後2,然後3完成同樣的事情。最後B(0,1,2,...可能不是連續提交,而是B分支中的一些重要里程碑)。

這是我們在進行復雜合併時使用的策略。在合併期間合併的分支可能不處於可工作狀態,因此不要直接推送到A,而是直接推送到另一分支(AB合併),然後一旦合併完成,將所有內容都推送到A.

+0

我想到漸進式承諾;但對於特定情況,不能進行合併,這正是我正在尋找的! – Marcus

+1

我想補充一句:如果你使用'git re-re-re',你可以讓小的合併工作,然後把它們扔掉,然後使用re-re-re數據快速合併。 –

0

但是對於特定的情況,我們無法提交正在進行的合併,這正是我正在尋找的!

它應該是可以移動的臨時.git/MERGE_HEAD(創建時merging),提交和恢復.git/MERGE_HEAD