Mercurial:如何在修改后恢复提交

Mercurial: How to revert a commit after amending it

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

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

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

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

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

完成后 - 原始更改将重新应用到原始根,您可以 strip 任何您不再需要的东西。

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

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

Evolve 还不是官方 mercurial 的一部分,但应该会成为这样。 [如您所见,乌龟已经支持它了。]我已经使用它很长时间了,而且效果很好。这比四处寻找旧包要容易得多,旧包的名称从您不再记得的日期起就被赋予了晦涩难懂的名称。完整的历史记录都在您的本地存储库中。