实现此目的的一种方法是使用 Mercurials 内置的“调试”命令。它们实际上是你永远不需要使用的命令,除非你知道,调试 Mercurial。理论上使用它们可能会破坏您的存储库,因此如果您确实需要,请使用克隆。
$ hg help --debug
...
debugsetparents
manually set the parents of the current working directory
如您所见,此命令的作用是允许我们手动设置工作目录的父级 - 使用它我们可以伪造合并。
因此,有了这些知识,并在一定程度上谨慎,我们可以做到:
$ hg log --graph
@ 1[tip] Change by A.N.Other
|
o 0 Local Change
$ hg debugsetparents 0 1
$ hg log --graph
@ 1[tip] Change by A.N.Other
|
@ 0 Local Change
$ hg commit -m "Merged"
$ hg log --graph
@ 2[tip] Merged
|\
| o 1 Change by A.N.Other
|/
o 0 Local Change
这不是我通常建议的事情,但它可以让您说明您正在从“另一个分支”中提取一些更改,而该分支实际上是您更改的尖端,我猜这是目标。
另外,请注意下面 shambulator 的评论 - 为了将更改包含在 中1
,您需要在执行 时将其作为您的工作目录debugsetparents
,否则您将丢失这些更改。当然,除非您的计划是放弃这些更改,在这种情况下,您应该update
更改集0
,然后伪造合并。