我有(或正在瞄準有!)回購像這樣:如何從主人合併到項目中,放棄所有項目提交?
Master *-----*--*----------C---
\ \
Project1 \-*-------A----B----M2---A'--B'---
\ \ \
Project2 \----------*---M1------------M2---
我願做合併M2但我想一個和乙是完全忽略。然後,我將手動(例如櫻桃採摘)重新創建A'和B'',如有必要,在主要的新變化之上。
Project2的是基於法師,但在從PROJECT1改變合併。
期望的結果:
我想點M2在文件方面是Ç完全相同的副本。
我需要Project1有它自己的線性歷史記錄,以便Project2可以從它合併。
上下文:Master是Drupal的主代碼庫。 Project1是我用來維護特定補丁的分支,我希望與幾個項目分享。 Project2(和許多其他)從Project1合併。
我已經考慮:
git merge -s recursive -X theirs master
問題,這是AFAIK它只會如果有什麼衝突喜歡theirs
。因此,如果某個變化並不衝突,它會出現在M2這將意味着A」將是不完整的。git revert B..A ; git merge C
這會工作,但會給我留下一個混亂和悠久的歷史。有
git merge -s ours
但似乎沒有git merge -s theirs
。我不想
git reset --hard C
因爲這會(我認爲)打破Project1合併到Project2的可能性。另一種方法是將Project1重新綁定到C,但這又意味着我無法合併到Project2中。
如果你想要「C的完全相同」,爲什麼不直接刪除你的Project2文件夾,'git clone; git checkout C'? –
我希望分支Project1的頂點處的樹與C處的頂點相同。我不想將任何文件複製到新的回購(這是克隆所做的)。問題是關於如何將project1分支中的樹的狀態與master分支中給定的提交相同。 – artfulrobot