如何恢复最后的提交并保持 mercurial 的变化?

How to revert last commits and keep changes in mercurial?

我有三个提交 1、2 和 3。我怎样才能回滚 2 和 3 并仍然保留它们的更改文件??

1---2---3

=> 1 and changed files of 2 and 3

您使用strip命令:

strip changesets and all their descendants from the repository

使用 --keep 选项:

-k --keep do not modify working copy during strip

并且由于 strip 会破坏历史记录,因此默认情况下未启用。您可以通过将这些行添加到您的 ~/.hgrc 文件来启用它:

[extensions]
strip =

所以在这种情况下你会做 hg strip --keep 2

注意:需要 Mercurial 2.8 或更高版本。在此之前,您需要将 mq = 放入 .hgrc 中。

如果你使用 TortoiseHg,你可以这样实现:

  1. 设置 -> 扩展程序
  2. 启用删除扩展程序
  3. -> 'Modify History' -> 'Strip'.[=25 发出 Strip... 命令=]
  4. 选中在剥离期间不修改工作副本(-k/--keep)选项。
  5. 单击删除 按钮。