Mercurial如何撤销上次提交?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (30)

我怎样才能撤消我最后一次在Mercurial中意外提交(未推送)的更改?

如果可能的话,最好用TortoiseHg做到这一点。

提问于
用户回答回答于

请使用hg commit --amend而不是rollback纠正上次提交中的错误。 回滚存储库中的最后一个事务。 当提交合并,水银增加了变更的最后一项。 Mercurial在事务之前保存每个文件的名称和其长度的事务日志。在中止时,它会将每个文件截断为前一个长度。这种简单性是使revlogs仅附加的一个好处。交易日志还允许撤消操作。

请参阅TortoiseHg恢复部分

  • ' hg rollback'将删除最后一笔交易。事务是数据库中经常遇到的一个概念。在Mercurial中,我们在某些操作运行时启动事务,例如提交,推送,拉... 当操作成功完成时,事务被标记为完成。如果发生错误,事务将被“回滚”,并且存储库将保持与之前相同的状态。 您可以使用'hg rollback'手动触发回滚。这将撤消上一个事务命令。如果一个pull命令将10个新的变更集带入不同分支的存储库,那么' hg rollback'将全部删除它们。请注意:回滚事务时没有备份
  • ' hg strip'将删除变更集及其所有后代。变更集被保存为一个包,如果您需要它们,可以再次应用。

用户回答回答于

hg strip 将从存储库中完全删除修订(以及任何后代)。

要使用strip,你需要通过将以下行添加到.hgrc(或mercurial.ini)来安装MqExtension

[extensions]
mq =

在TortoiseHg中,strip命令在工作台中可用。右键单击修订版,然后选择“修改历史记录” - >“剥离”。

由于strip修改了存储库的历史记录,你应该只在尚未与任何人共享的修订版上使用它。如果你使用的是mercurial 2.1+,则可以使用阶段来跟踪此信息。如果提交仍处于草稿阶段,那么它尚未与其他存储库共享,因此你可以安全地删除它。(感谢Zasurus指出了这一点)。

扫码关注云+社区