2011-02-28 49 views

回答

17

Shelve擴展可以給你帶來悲傷,這可以完全用Mercurial命令完成。 Krtek幾乎擁有它,但他用export而不是diff。試試這個:

hg diff --git > ~/saved-work.patch 
hg update --clean desiredbranch 
hg import --no-commit ~/saved-work.patch 
+0

是的,'hg selve',patch-queues et al。不工作,給你真正的悲傷!上述解決方案確實是一種很好的做法。 – math 2012-11-20 09:47:02

1

我不知道這是否是最好的解決辦法,但你可以按照下列步驟操作:

hg diff --git > modifications.patch

hg update -C the_right_branch

hg patch modifications.patch

也許是更好地複製修改.patch安全的地方,以防萬一。

編輯:使用diff更新而不是導出。感謝評論者。

+0

這個補丁只會包含未提交的更改嗎?我所從事的分會有很多分歧,這些分歧在過去已經從我打算分會的分會中承擔過。 – 2011-02-28 18:35:48

+1

這不應該導出它應該是差異。 – 2011-02-28 18:42:49

+0

是的,出口是針對給定的修訂,而不是工作目錄的當前修改,我會更新我的文章。 – krtek 2011-02-28 19:05:36

3

你應該可以只hg up otherbranch。重要的是,您不要直接或通過別名使用hg up的--clean選項,因爲這會丟棄未提交的更改。

另一種選擇是使用提供hg shelve的擴展之一。然後,該過程將是:

$ hg shelve --all 
$ hg up otherbranch 
$ hg unshelve 

,將創建的.hg目錄中更改一個補丁,恢復你的工作目錄爲乾淨的狀態,切換到「otherbranch」,然後應用保存的補丁。

+0

我不知道這個擴展,謝謝,它比我自己的答案更容易:) – krtek 2011-02-28 17:31:03

+1

Krtek,你的答案更好。出於某種原因,擱架不與Mercurial一起發貨。添加文件很困難,不支持新功能,如果擱置不適用於新位置,則工作流程可怕。 – 2011-02-28 18:25:31

+0

@ Ry4an感謝您的信息。我經歷了擱置時可怕的工作流程,當它不能很好地應用時。似乎應該有一個擴展提供了類似shelve的行爲,但只是在幕後執行diff/import命令 - 甚至可能只使用別名。 – 2011-02-28 19:40:30