回答
如果當前父修訂和目標之間調整的線性路徑,那麼你可以只發出
hg update right-branch
和Mercurial會在你的工作副本的修改合併到目標版本。
這是通過使用完整合並工具機器來完成的,因此可以考慮重命名之類的事情,如果發生衝突,您將得到一個三向合併程序。基於擱置和差異的方法缺少這一點,需要您使用.rej
文件手動修復衝突。您甚至可以通過hg resolve --list
查看當前合併狀態,並自Mercurial爲您進行必要備份後重新合併所選文件。
如果沒有直線路徑,你會得到這樣的警告:
abort: crosses branches (merge branches or use --clean to discard changes)
那麼你可以得到你想要通過先更新回到一個共同的祖先,然後再次更新着什麼。我不是100%確定我們爲什麼發出此警告,但如果您好奇,搜索郵件列表存檔應該會給您答案。
不幸的是,Mercurial不支持開箱即用,因此您需要臨時提交併使用rebase
或tramsplant
或將其轉換爲正確的分支,或者進行差異化並手動應用。您還可以使用第三方擱置擴展,見https://www.mercurial-scm.org/wiki/ShelveExtension和https://www.mercurial-scm.org/wiki/AtticExtension
如果您正在使用TortoiseHg,它很容易實現與THG的貨架能力(http://tortoisehg.bitbucket.io/manual/2.9/shelve.html)。在提交對話框中,只需點擊Shelve按鈕(其圖標是疊加Z的文件),然後雙擊右箭頭以擱置所有更改。關閉擱置對話框,更新到正確的更改集,打開擱置對話框,然後單擊雙左箭頭取消擱置它們。
如果您不使用THG,您可以安裝hgshelve擴展名(https://www.mercurial-scm.org/wiki/ShelveExtension),但我並不熟悉它。
似乎你也可以用Mercurial隊列(http://mercurial.808500.n3.nabble.com/Shelve-extension-td802439.html)獲得相同的結果。
如果你想做到這一點沒有貨架擴展,做到以下幾點:
hg diff --git > ../work_in_progress.patch
hg up desired-branch
hg import --no-commit ../work_in_progress.patch
哪裏../work_in_progress.patch
可以是你想要的任何路徑(我通常只存儲上面我的倉庫我的補丁)和desired-branch
是您實際上想要將更改應用到的分支。
請注意,如果您正在使用的分支和您要使用的分支足夠不同,以至於您的補丁程序無法順利應用,那麼我發現的任何解決方案都會開始崩潰。在這種情況下,您開始需要手動解決衝突。
- 1. 致力於未檢出的分支
- 2. 致力於所有分支機構
- 3. hg push - 新分會去錯分支
- 4. VS2015錯誤,變化不致力於源
- 5. 漂亮的hg分支圖
- 6. 將hg分支轉換爲git分支?
- 7. Hg轉換丟失分支
- 8. 無法關閉hg分支?
- 9. git分支在hg subrepo
- 10. Mercurial分支分支不顯示正確的hg服務或hg視圖
- 11. hg convert的錯誤
- 12. Facebook分享者顯示(幾乎)總是錯誤的作者
- 13. Android 2.3.x上的jQuery發佈錯誤(致力於Android v4.x)
- 14. LogCat中的幾個alarmManagerService錯誤(幾乎每秒4次)
- 15. 如何刪除hg中的分支?
- 16. 替換hg分支的內容
- 17. 由於malloc導致分段錯誤
- 18. 破碎分支,致命的:你當前分支似乎被打破
- 19. 由於while循環導致的分段錯誤錯誤
- 20. AngularJS分頁幾乎工作
- 21. 運行HG的TortoiseHg錯誤
- 22. 致命錯誤火力地堡快照
- 23. SQL錯誤,同時致力於網絡使用PHP
- 24. MEF,ImportingConstructor似乎導致了錯誤
- 25. Hg命名分支Errant Commit Clean
- 26. tortoise hg創建'兄弟'分支
- 27. HG多個頭跨多個分支
- 28. HG更新需要分支合併
- 29. hg:如何轉換一個subversion分支
- 30. 刪除了幾十個git分支,幾乎沒有空間保存
我相信Mercurial和Git非常相似。所以我相信你有兩個選擇。手動保存您添加和更改的所有文件,切換分支,然後將其複製到文件系統的頂部。或者在當前分支中提交更改,切換到您真正想要的分支並從前一分支進行合併。 –