如何在工作目录中撤回Mercurial变更集,而不将其提交到存储库中?

时间:2019-02-13 18:21:25

标签: mercurial mercurial-extension

  

回退通过应用与   变更集将被撤消。新的变更集致力于   存储库,并最终合并。

https://www.mercurial-scm.org/wiki/Backout

如何在不提交变更集的情况下退出?我只想将变更集还原到工作目录中。

2 个答案:

答案 0 :(得分:2)

尝试hg退出-不提交REV

这将执行撤消,但更改未提交。

答案 1 :(得分:1)

假设您已经提交了一个新变更集,但尚未推送;假设您的历史记录如下:

A--B--C--★

其中C是您希望取消的最近提交的变更集,但将其修改保留在工作文件夹中。 ★是工作目录(而不是实际的变更集)。

有多种方法可以做到这一点。一种方法是...

hg up B

这使您的历史记录看起来像这样:

A--B--★
    \
     C

然后做

hg revert -r C

实际上会将C语言中的所有更改复制到您的工作文件夹中。

那你就可以做(可选)

hg strip C

从历史中根除C:

A--B--★

此方法的优点是,它可以完全删除C,就像它从未存在过一样。

(我曾说过,在这种意义上,使用strip是可选的:如果您确实将C保留在原位,则几乎不会造成伤害。而且,如果它被标记为机密,则无需将其推入。但是我个人而言会通过剥离进行清理。)