我不小心做了一个“hg commit --amend”而不是一个提交。如何将提交回滚到修改前?
问问题
19275 次
4 回答
62
您可以使用hg reflog
(来自期刊扩展名)和hg reset <hash>
.
hg reflog -v
应该给出类似的东西:
<old-hash> -> <new-hash> <user> <timestamp> commit --amend <some-path>
如果这是您要恢复的修改,只需使用:
hg reset <old-hash>
提交将恢复到以前的状态,并且已修改的更改现在应该是未提交的更改(使用hg status
and进行检查hg diff
)。
于 2015-07-08T20:24:47.140 回答
10
如果您的 Mercurial 版本足够新,我相信您应该能够使用Mercurial 附带hg unamend
的扩展程序中的命令。uncommit
这可能需要启用过时标记,我不确定。
启用
uncommit
扩展,将其添加到您的~/.hgrc
:[extensions] uncommit =
实际运行未修改:
hg unamend
于 2019-02-08T20:22:21.097 回答
5
.hg/strip-backup
在目录中查找最新保存的备份hg unbundle .hg/strip-backup/<latest backup>
- 现在你应该有两个头 - 一个带有修改后的提交,另一个带有两个提交(第一个 - 修改前的旧提交,第二个被称为:“临时修改提交(旧提交哈希)”。
- 如果您有
histedit
扩展名,您可以hg histedit
对其进行更改以更改它(例如,选择edit
以在提交之前实现状态,即当您可以使用 看到所有更改时hg diff
)。
别忘了剥掉老头。
于 2016-07-29T05:42:27.120 回答
-4
注意:此答案现已弃用。请参阅@Sorina Sandu的答案。
看hg help commit
,它说:
--amend 标志可用于使用新提交修改工作目录的父级,该提交包含父级中的更改以及“hg status”当前报告的更改(如果有的话)。 旧提交存储在“.hg/strip-backup”中的备份包中(有关如何恢复它,请参阅“hg help bundle”和“hg help unbundle”)。
于 2013-05-22T18:46:28.813 回答