在Mercurial中,如何在历史记录包含合并时编辑过去的变更集?

时间:2015-07-13 08:24:41

标签: version-control merge mercurial dvcs

我有以下历史:

@    4 changesABC tip
|\
| o  3 changesAB
| |
o |  2 changesAC
|/
o  1 changeA
|
o  0 initial.

现在我想对changeset 1进行更改,以便更改反映在其后代中。如果我尝试:

hg histedit 1

我明白了:

abort: cannot edit history that contains merges

有什么方法可以解决这个问题?我发现这种情况很常见;如果我能做到这一点真的很有帮助。

1 个答案:

答案 0 :(得分:2)

没有简单的方法可以做到这一点,并且对于进化扩展也是如此(仍然)是正确的(思想,它仍然表示为实验)。然而,当你尝试使用evolve同样的东西时,它表明:

Abbort: no support for evolving merge changesets yet (Redo the merge and use 'hg prune <old> --succ <new>' to obsolete the old one)

启用了evolve扩展的工作流程将如下所示: hg up 1 (make changes) hg evolve -a 然后你需要按照建议重新进行合并然后你应该完成(请使用适当的修订版,只需按心键输入): hg merge -r6 hg prune 4 --succ NEW_MERGE_CHANGESET 请注意,这仅适用于非公开变更集,因此您需要在这些操作之前强制进行相变。