如何将一些变更集移动到mercurial的新分支
我想将一个变更集从一个分支移到另一个分支。 基本上我现在有:
A -> B -> C -> D # default branch
而且我要:
A # default branch \-> B -> C -> D # some_new_branch
那里some_new_branch还不存在。 我已经习惯了,所以我猜想我有一个简单的“mercurial”方法。
一种方法是导出B,C,D的补丁; 更新到A; 科; 应用补丁:
hg export -o patch BCD hg update A hg branch branchname hg import patch
要从默认分支中删除B,C,D,请使用mq分机的strip
命令。
听起来有点像git中的樱桃挑选操作。 移植扩展可能是你在找什么。
与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
替代移植或补丁,你可以使用移植 。
hg update A hg branch branchname hg graft -D "B:D" hg strip B
请注意,改变历史是不好的做法。 只有在尚未推送的情况下,您才应该剥离。 否则,您仍然可以退出您的更改。