Version control 我可以在mercurial中创建一个分支来撤消以前的合并吗?

Version control 我可以在mercurial中创建一个分支来撤消以前的合并吗?,version-control,mercurial,merge,versioning,branching-and-merging,Version Control,Mercurial,Merge,Versioning,Branching And Merging,我想返回到一个工作版本,并将自该版本以来所做的每一个更改集拉入一个新分支。基本上,我已经从主分支合并了几次,并希望将这些合并出来 这可能吗?是否有任何工具可以帮助我完成此操作?如果您的历史记录如下所示: [M1]--[M2]----[M3]---[M4]----[M5]----[M6] \ \ \ [B1]--[B2]--[B3]----[B4]----[B5]----[B6] [M1]--[M2]----[M3]---[M4]-

我想返回到一个工作版本,并将自该版本以来所做的每一个更改集拉入一个新分支。基本上,我已经从主分支合并了几次,并希望将这些合并出来


这可能吗?是否有任何工具可以帮助我完成此操作?

如果您的历史记录如下所示:

[M1]--[M2]----[M3]---[M4]----[M5]----[M6]
   \            \               \
    [B1]--[B2]--[B3]----[B4]----[B5]----[B6]
[M1]--[M2]----[M3]---[M4]----[M5]----[M6]
   \
    [B1]--[B2]--[B4]----[B6]
其中,M#是默认分支上的变更集,B#是现有分支上的变更集,B3和B5是合并变更集,您的目标是获得如下内容:

[M1]--[M2]----[M3]---[M4]----[M5]----[M6]
   \            \               \
    [B1]--[B2]--[B3]----[B4]----[B5]----[B6]
[M1]--[M2]----[M3]---[M4]----[M5]----[M6]
   \
    [B1]--[B2]--[B4]----[B6]
然后,您可以通过执行以下操作来实现:

hg update M1
hg branch new_branch_I_want
hg graft B1 B2 B4 B6
这将把这些变化引入到您的新分支中。当然,旧分支仍将以未修改的状态存在。由于嫁接跳过合并变更集,您可能可以指定整个B1::B6范围,但我没有尝试过