我有一個項目的4個版本。版本1-3是最初不受源代碼控制的「原型」(它們作爲文件系統中的單獨目錄而存在)。版本4自成立以來一直受到源代碼控制,現在已有很長的提交歷史。在Mercurial中,如何組合無關的存儲庫,只留下一個根?
我想這些結合起來,使版本1-3成爲個人的變更,其中每一個都是以前的後裔。版本4的根目錄應該成爲版本3的後代(當然也不會崩潰版本4的歷史記錄)。
所有變化都是私人的,不公開的(沒有與改寫歷史,因爲它是沒有問題的)。
我到目前爲止已經完成,並試圖:
1.我建立新的汞庫的原型版本的目錄
2.我克隆版本4
3.我拉庫(與hg pull --force
)版本1-3的不相關存儲庫到克隆的存儲庫中。
這給了我4無關「根」(沒有祖先的變更)在單個存儲庫。當我把它們結合起來時,我不想記住這四個根。 hg rebase
應該讓我移動變更並銷燬原件,而不像hg merge
。
這裏我將使用101
作爲「版本1」(這是沒有父代的單個變更集)和102
作爲「版本2」的修訂版的修訂版。
嘗試1:我嘗試hg rebase -b 102 -d 101
但得到的輸入反應nothing to rebase
。據推測,這是因爲他們沒有共同的祖先(我喜歡這種感覺不一致... -b 102
將包括所有的祖先除了共同的祖先,這將是沒有在這種情況下)。
嘗試2:我嘗試hg rebase -s 102 -d 101
。這會導致合併衝突。我做了hg revert --all --rev 102
和hg resolve -m
以表明我更喜歡所有衝突中的「版本2」(儘管我懷疑這是否是在存在增加/刪除的情況下更偏向於另一個父節點的正確方法?)。但是當我提交時,我沒有線性歷史記錄---修訂版102
仍然存在!
如果您在合併,重新綁定或移植時合併衝突,則應在手動解決這些衝突之前手動解決這些衝突。否則,您的變更集不一致。 –
在我的情況下,'hg revert --all --rev 102'是我想要如何解決衝突的方法「手動」 – Ein
@Ein,「文檔的最後部分」是什麼是重要的關鍵爲你解決這個問題?謝謝 – DaveInCaz