我有一个Mercurial仓库,仅在本地使用...这是我个人使用的(所以我不会在任何地方“push”)。
我提交了3个文件,但之后我明白应该提交4个文件...
是否有一种方法可以“回滚”我的最新(最近的,唯一的)提交,并使用正确的文件进行“重新提交”?
(我不知道为什么,但我的“修改当前修订版”选项没有激活,所以我不能使用它...)
你只需要执行这个命令:
hg rollback
参见:http://hgbook.red-bean.com/read/finding-and-fixing-mistakes.html。(从技术上讲,自2013年8月版本2.7起就已被弃用,但我仍未看到完全相同的替代方案。)
hg commit --amend
并不能完全替代 hg rollback
。虽然它可以用于添加新的变更(或更改信息),但是如果想要不添加任何变更,请祈求好运。"[amend] 可以用于将工作目录的父项与包含由 hg 状态报告的当前变更 以及 额外变更的新提交进行修改,如果有的话。" TortoiseHG Workbench 做了一些魔法来允许“记录式”的块选择,这确实可以做到:但这并不是通过使用 hg commit --amend
作为通用的 hg revert
替代品来实现的。 - user2864740答案是strip(如果您未启用它,可以在此处查看如何启用:https://dev59.com/J3E85IYBdhLWcg3wqVX5#18832892)。
如果您想还原最新的提交,请使用以下命令:
hg strip --keep -r .
如果你想回到某个特定的提交:
hg strip --keep -r 1234
使用strip命令将文件状态还原到指定的提交,但文件会成为待处理更改,因此可以与文件一起应用于新提交。
如果您误用了该命令或者想要恢复更改,则可以在.hg/strip-backup文件夹中找到被还原的文件。
hg uncommit
来撤销提交。hg add file4
hg amend
hg strip --keep -r .
命令。https://dev59.com/i2cs5IYBdhLWcg3wHwbU#19064016 - ForeverWintr