Mercurial:修改后如何恢复提交

时间:2015-01-28 00:22:29

标签: mercurial

我运行hg commit --amend来修改提交,但现在我想在修改它之前回到提交。修改前提交的提交哈希值似乎没有显示在hg log中。那我该怎么做呢?

2 个答案:

答案 0 :(得分:4)

如果您启用了evolve extension,则使用" hg commit --amend"删除了已删除的更改集。不再被覆盖。相反,它们隐藏着过时的标记,但仍然可以查看并恢复到正常的变更集。

要从命令行查看隐藏的变更集,只需将--hidden添加到普通命令,例如" hg glog --hidden -l 10"。在乌龟中,过滤器工具栏(^ S)有一个显示隐藏变更集的图标。

Evolve尚未成为官方善变的一部分,但将会成为现实。 [如你所见,它已经得到了乌龟的支持。]我已经使用了很长时间并且效果非常好。比试图找到一个旧的捆绑包更加容易,这个旧的捆绑包从你不能再记得的日期开始就被赋予了一个晦涩难懂的名字。完整的历史就在您当地的仓库中。

答案 1 :(得分:1)

commit --amend命令在.hg/strip-backup目录中创建备份。

所以你现在需要做的就是执行

hg unbundle .hg/strip-backup/<your-backup-name>

其中<your-backup-name>是备份的名称,是您在执行amend时告诉您的名称。

执行此操作后,原始更改会重新应用到原始根目录,您可以strip再也不需要了。