如何将一些变更集移动到mercurial中的新分支

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将一些变更集移动到mercurial中的新分支相关的知识,希望对你有一定的参考价值。

我想将变更集从一个分支移动到另一个分支。基本上,我目前有:

A -> B -> C -> D # default branch

而且我要:

A # default branch
 -> B -> C -> D # some_new_branch

其中some_new_branch尚不存在。我习惯了git,所以我想我错过了一种简单的“mercurial”方式。

答案

一种方法是导出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命令。

另一答案

听起来有点像git中的cherry-pick操作。 Transplant Extension可能是您正在寻找的。

另一答案

使用Mercurial Queue:

# 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
另一答案

替代移植或补丁,你可以使用graft

hg update A
hg branch branchname
hg graft -D "B:D"
hg strip B

请注意,改变历史是不好的做法。只有在尚未推动时才应该剥离。否则,您仍然可以撤消更改。

以上是关于如何将一些变更集移动到mercurial中的新分支的主要内容,如果未能解决你的问题,请参考以下文章

在使用 Mercurial 移植大量变更集时更改提交消息

Mercurial:在一个仓库中的分支之间合并一个文件

使用提交消息 mercurial 查找变更集

提交后修复Mercurial存储库中的重命名

Mercurial:删除单个非头部变更集

如何正确关闭 Mercurial 中的功能分支?