简单问题: 让我们说我有本地提交如下:
master -> a -> b -> c
我想合并a和b。什么是hg命令?我试过了
hg up b
hg fold -r a
收到错误消息:abort: cannot fold chain not ending with a head or with branching
我试过
hg up b
hg amend
这创建了一个类似
的堆栈master -> a.preamend -> b -> c
\-> a
这不允许我继续c。最后,我试过
hg up b
hg histedit a
abort: can only histedit a changeset together with all its descendants
没有运气。我想要的是:
hg up b
hg *merge* -r a
返回
master -> b -> c
提前致谢!
答案 0 :(得分:3)
关于错误消息
当您的存储库中不允许发生新的不稳定更改时,会出现此错误消息mailto
。
不稳定的更改是那些其子项未过时的过时更改。您应该在abort: cannot fold chain not ending with a head or with branching
中查找experimental.evolution
并向其添加hg config
。
关于折叠变更集
有两种方法可以使用"unstable"
折叠堆栈中间的提交。
使用fold
选项:您可以执行--exact
。在这种情况下,工作目录的父级是什么并不重要。你必须提到要折叠的修订版。
使用hg fold -r a -r b --exact
更新到您要修剪的最后一个孩子,在这种情况下是b
。然后运行hg update -r b
。传递给fold的修订版必须是您要折叠的链的初始修订版。
你有
hg fold -r a
你折叠master -> a -> b -> c
和a
,它们已经过时了,因为b
有一个没有过时的子b
,这是一个不稳定的变更集。
所以你所做的并没有错,根据你的配置,它是不被允许的。
答案 1 :(得分:0)
如果你想将更改从两个提交压缩到一个提交,那么你可以使用hg rebase命令来压缩更改。
$ hg rebase -r a :: b -d master --collapse
这会将a和b提交的更改压缩到一个提交
有关详细信息,请参阅:RebaseExtension