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

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

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

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

(我不知道为什么,但我的“ 修改现行修订”选项不是活动的,所以我不能使用它...)

107622 次浏览

你只需要这个命令:

hg rollback

见: http://hgbook.red-bean.com/read/finding-and-fixing-mistakes.html

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

答案是 脱衣服(如果您没有启用它,您可以在这里检查如何启用它: https://stackoverflow.com/a/18832892/179581)。

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

hg strip --keep -r .

如果要恢复到特定的提交:

hg strip --keep -r 1234

使用 Strip 会将文件的状态还原为指定的提交,但是它们将作为挂起的更改,因此您可以将它们与您的文件一起应用到新的提交中。

恢复被剥离的数据:

如果您错过-使用命令或您想恢复您的变化,您可以找到您的剥离文件在 . hg/Strip-back文件夹。

教程关于如何恢复您的文件,或只是谷歌它(工程相同的所有操作系统)。

归功于 永远的冬天

在现代汞中:

hg uncommit

或者,为了解决你的问题:

hg add file4
hg amend