2016-09-26 39 views
2

混帳衝突,我有以下混帳回購協議:自動解決,除了一些文件

oooooooooooooo 
    o  o 
    o V1 o V2 
    o 
     o MyChange 

我有一個git diffV1..MyChange。現在我想將所有內容合併到V2,併爲V2..MyChange創建一個新的差異。

如何告訴Git通過採取V2自動解決所有衝突,除了V1..MyChange差異文件?

我已經試過

git checkout MyChange 
git merge V2 

和我得到的與兩個文件的修改和文件刪除衝突100S。我只想從V2中除了我對MyChange感興趣的文件以外的所有內容。

+1

似乎更容易(也可能更正確),以「cherry-pick」,應用補丁或使用「rebase」實現此目的。 –

回答

1

看起來您有幾個補丁目前在V1之上應用,並且您想更新您的回購並在V2上應用您的修補程序。正如@Yehezkel's comment中提到的,rebase是一個更好的方法來做到這一點。

具體來說,你可以這樣做:

git checkout MyChange 
git rebase --onto V2 V1 

或者乾脆:

git rebase --onto V2 V1 MyChange 

這將導致你的歷史看起來像這樣:

oooooooooooooo 
    o  o 
    o V1 o V2 
      o 
       o MyChange 

您可能仍然有衝突,但它應該限於實際的衝突,即f這些文件在V2和修補程序中都發生了變化。

+0

謝謝,我會試試這個。之前我沒有使用過「--onto」,這導致了很多衝突,所以重新分配一直在中止,告訴我先解決衝突。 – siamii

+0

我現在已經試過了,由於衝突,rebase正在每一次提交都停止。不知道如何解決這個問題,感覺就像手動重做了整個功能開發工作。 – siamii

+0

@siamii這些實際的衝突(您在'MyChange'中更改過的內容在'V2'中也發生了變化)?或者你是否必須不斷重做已經完成的衝突解決方案?如果是後者,那麼['git rerere'](// stackoverflow.com/a/7241744/2747593)可能會有所幫助。 –