我不小心做了一个"hg commit --amend"而不是一个提交.如何在修改之前回滚提交?
小智 55
您可以使用hg reflog(来自期刊延期)和hg reset <hash>.
hg reflog -v
Run Code Online (Sandbox Code Playgroud)
应该给出类似的东西:
<old-hash> -> <new-hash> <user> <timestamp> commit --amend <some-path>
Run Code Online (Sandbox Code Playgroud)
如果这是你要恢复的修改,只需使用:
hg reset <old-hash>
Run Code Online (Sandbox Code Playgroud)
提交将恢复到以前的状态,修改后的更改现在应该是未提交的更改(使用hg status和检查hg diff).
小智 10
如果您的 Mercurial 版本足够新,我相信您应该能够使用Mercurial 附带hg unamend的uncommit扩展程序中的命令。这可能需要启用过时标记,我不确定。
启用uncommit扩展,将其添加到您的~/.hgrc:
[extensions]
uncommit =
Run Code Online (Sandbox Code Playgroud)实际运行 unamend:
hg unamend
Run Code Online (Sandbox Code Playgroud)小智 5
.hg/strip-backup目录中查找最新保存的备份hg unbundle .hg/strip-backup/<latest backup>histedit扩展名,则可以hg histedit对其进行更改以进行更改(例如,选择edit以便在提交之前获得状态,即使用可以看到所有更改hg diff)。别忘了剥掉旧头。
Tim*_*gan -4
注意:此答案现已弃用。请参阅@Sorina Sandu 的答案。
看看hg help commit,它说:
--amend 标志可用于使用新的提交修改工作目录的父目录,其中包含父目录中的更改以及“hg status”当前报告的更改(如果有)。 旧的提交存储在“.hg/strip-backup”中的备份包中(有关如何恢复它的信息,请参阅“hg help bundle”和“hg help unbundle”)。