回退通过应用与要撤消的变更集相反的变更集来工作。新的变更集将提交到存储库,并最终合并。
https://www.mercurial-scm.org/wiki/Backout
如何在不提交变更集的情况下退出?我只是想在工作目录中恢复变更集。
尝试hg backout --no-commit REV
这将执行备份,但保留未提交的更改。
假设你已经提交了一个新的变更集但尚未推出它;假设您的历史记录如下:
A--B--C--★
其中C是您希望取消的最近提交的变更集,但将其修改保留在工作文件夹中。并且★是工作目录(不是实际的变更集本身)。
有不止一种方法可以做到这一点。一种方法是以下......
hg up B
这使您的历史记录如下所示:
A--B--★
\
C
然后做
hg revert -r C
这实际上将C中的任何更改复制到您的工作文件夹中。
然后你可以做(可选)
hg strip C
从历史中消除C:
A--B--★
这种方法的一个优点是它完全删除了C,就像它从未存在过一样。
(我提到使用strip
在这个意义上是可选的:如果你确实离开了C,它几乎不会造成伤害。如果它被标记为秘密,你就永远不需要推它。但我个人会通过剥离来清理它。 )