我一直在對我的工作目錄進行一些更改,並注意到我意外地在錯誤的分支上工作。我還沒有做任何事情,我希望我的下一個承諾違背另一個分支。做這個的最好方式是什麼?無意中在Mercurial的錯誤命名分支上工作
回答
Shelve擴展可以給你帶來悲傷,這可以完全用Mercurial命令完成。 Krtek幾乎擁有它,但他用export
而不是diff
。試試這個:
hg diff --git > ~/saved-work.patch
hg update --clean desiredbranch
hg import --no-commit ~/saved-work.patch
我不知道這是否是最好的解決辦法,但你可以按照下列步驟操作:
1°hg diff --git > modifications.patch
2°hg update -C the_right_branch
3°hg patch modifications.patch
也許是更好地複製修改.patch安全的地方,以防萬一。
編輯:使用diff更新而不是導出。感謝評論者。
這個補丁只會包含未提交的更改嗎?我所從事的分會有很多分歧,這些分歧在過去已經從我打算分會的分會中承擔過。 – 2011-02-28 18:35:48
這不應該導出它應該是差異。 – 2011-02-28 18:42:49
是的,出口是針對給定的修訂,而不是工作目錄的當前修改,我會更新我的文章。 – krtek 2011-02-28 19:05:36
你應該可以只hg up otherbranch
。重要的是,您不要直接或通過別名使用hg up
的--clean選項,因爲這會丟棄未提交的更改。
另一種選擇是使用提供hg shelve
的擴展之一。然後,該過程將是:
$ hg shelve --all
$ hg up otherbranch
$ hg unshelve
,將創建的.hg目錄中更改一個補丁,恢復你的工作目錄爲乾淨的狀態,切換到「otherbranch」,然後應用保存的補丁。
我不知道這個擴展,謝謝,它比我自己的答案更容易:) – krtek 2011-02-28 17:31:03
Krtek,你的答案更好。出於某種原因,擱架不與Mercurial一起發貨。添加文件很困難,不支持新功能,如果擱置不適用於新位置,則工作流程可怕。 – 2011-02-28 18:25:31
@ Ry4an感謝您的信息。我經歷了擱置時可怕的工作流程,當它不能很好地應用時。似乎應該有一個擴展提供了類似shelve的行爲,但只是在幕後執行diff/import命令 - 甚至可能只使用別名。 – 2011-02-28 19:40:30
- 1. 刪除命名錯誤的git分支
- 2. 在Mercurial中管理長命名的分支
- 3. Mercurial和CruiseControl.Net的「交叉分支」錯誤
- 4. 如何重命名由錯誤「-update」命名的git分支?
- 5. 更新到mercurial中的命名分支的頭部
- 6. Mercurial:將單個更改合併到未命名的分支中
- 7. 在Mercurial中合併分支
- 8. 如何找到命名的mercurial分支的父級?
- 9. TFS中的分支命名
- 10. Can Mercurial可以合併不是頭的命名分支嗎?
- 11. Mercurial中的分支工作和Git一樣好嗎?
- 12. Mercurial中的神祕分支
- 13. Mercurial:在開發過程中從命名分支創建的影響
- 14. 如何在Mercurial中將命名分支與不同的變更集相關聯?
- 15. 在分支重命名後重定位SVN工作副本
- 16. 在Gitkraken重命名分支?
- 17. 命名以前未命名的分支
- 18. Win XP上的Mercurial錯誤
- 19. 同步分支在mercurial
- 20. Mercurial關閉分支
- 21. Capistrano,Mercurial和分支
- 22. 瞭解Mercurial分支
- 23. Mercurial:分支版本?
- 24. 使用Mercurial的分支功能工作流程
- 25. 在github中重命名基本分支
- 26. 在TortoiseHG中重命名默認分支
- 27. 約15位開發人員的Mercurial工作流程 - 我們是否應該使用命名分支?
- 28. 錯誤(命名)作用域
- 29. Tcl錯誤無效命令名:無效的命令名稱」 0.27722296"
- 30. Odoo10工作設置現在導入錯誤失敗:無模塊命名的conf
是的,'hg selve',patch-queues et al。不工作,給你真正的悲傷!上述解決方案確實是一種很好的做法。 – math 2012-11-20 09:47:02