你如何“回滚”Mercurial的最后一次提交?

时间:2013-12-09 12:37:25

标签: mercurial commit rollback

我有一个Mercurial存储库,我只在本地使用...这是我的个人用法(所以我不会“推”到任何地方)。

我提交了3个文件,但之后我明白我应该提交4个文件......

有没有办法“回滚”我的最后(最新的,只有一次)提交,并“重新发送”正确的文件?

(我不知道为什么,但我的“ Amend current revision ”选项未激活,所以我无法使用它...)

3 个答案:

答案 0 :(得分:85)

您只需要此命令:

hg rollback

请参阅:http://hgbook.red-bean.com/read/finding-and-fixing-mistakes.html

(从技术上讲,从2013年8月的2.7版开始,这个版本已被弃用,但我还没有看到一个完全相同的替代方案。)

答案 1 :(得分:26)

答案是 strip (如果你没有启用它,你可以在这里查看如何启用它:https://stackoverflow.com/a/18832892/179581)。

如果您只想恢复最新的提交使用:

hg strip --keep -r .

如果您想恢复特定提交:

hg strip --keep -r 1234

使用strip会将文件的状态恢复为指定的提交,但您将把它们作为挂起的更改,这样您就可以将它们与文件一起应用到新的提交中。

恢复已剥离的数据:

如果您错过了使用该命令,或者想要恢复更改,可以在 .hg / strip-backup 文件夹中找到已剥离的文件。

Tutorial on how to restore your files, or just google for it (works the same on all OS).

归功于ForeverWintr

答案 2 :(得分:2)

现代hg:

hg uncommit

或者,对于您的确切问题:

hg add file4
hg amend