我想將變更集從一個分支移動到另一個分支。基本上,我目前有:如何將某些變更集移動到mercurial中的新分支
A -> B -> C -> D # default branch
而且我想:
A # default branch
\-> B -> C -> D # some_new_branch
哪裏some_new_branch還不存在。我習慣了混帳,所以我猜想我有一種簡單的「mercurial」方式。
我想將變更集從一個分支移動到另一個分支。基本上,我目前有:如何將某些變更集移動到mercurial中的新分支
A -> B -> C -> D # default branch
而且我想:
A # default branch
\-> B -> C -> D # some_new_branch
哪裏some_new_branch還不存在。我習慣了混帳,所以我猜想我有一種簡單的「mercurial」方式。
聽起來有點像git中的櫻桃挑選操作。 Transplant Extension可能是你要找的。
一種方法是導出B,C,D的補丁;更新到A;科;應用補丁:
hg export -o patch B C D
hg update A
hg branch branchname
hg import patch
要刪除B,C,d從默認的分支,使用MQ擴展的strip
命令。
在一個項目中,我們決定不在下一個版本中包含一個功能,該功能已經成爲默認分支的一部分 - 我使用您的解決方案創建了一個新分支,其中包含與此功能相關的變更集。我沒有剝離變更集,而是將默認分支恢復到實施開始前的狀態。 – 2012-10-18 09:59:09
這是爲了在那些被推到默認狀態之前,我假設? – NoBugs 2014-01-01 06:46:43
是的,如果共享原始歷史記錄,任何對歷史的編輯都爲時已晚。你必須編輯歷史的所有副本,這可能不實際或不可行。 – 2014-01-01 18:04:23
與Mercurial隊列:
# mark revisions as draft in case they were already shared
#hg phase --draft --force B:D
# make changesets a patch queue commits
# (patches are stored .hg/patches)
hg qimport -r B:D
# pop changesets from current branch
hg qpop -a
#
hg branch some_new_branch
# push changesets to new branch
hg qpush -a
# and make them commits
hg qfinish -a
沒有評論:
hg qimport -r B:D
hg qpop -a
hg branch some_new_branch
hg qpush -a
hg qfinish -a
第4行命令是 hg qpush -a – Shad 2014-01-13 00:41:44
@Shad謝謝,修正。 – 2014-01-13 08:27:04
如果例如它們已發佈在Bitbucket上(在其設置「>」更改集「中的web界面中),您仍然需要去除已移動的變更集。其他情況下,他們將進入分支,他們在第一次拉動後被移動。 – 2015-07-04 14:25:19
這可能取決於你的意思是「分支」。 Mercurial有許多不同的分支策略,您應該嘗試熟悉一下:http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/ – user37078 2010-03-28 16:59:15
類似的問題:[Mercurial move changes到一個新的分支](http://stackoverflow.com/q/4665549) – 2012-04-29 19:22:18
[Mercurial移動更改爲新分支]的可能重複(http://stackoverflow.com/questions/4665549/mercurial-move-changes- – PhoneixS 2016-03-10 10:16:41