在Mercurial中提交和回滚后恢复丢失的文件.(相当于git refflog ?)



已提交工作。当我不在回购的顶端时做了一个回滚。丢失的文件。寻找git reflog等价文件来保存我的工作。

长:所以我完成工作,然后提交。

$ hg commit -A
[...]
adding media/js/fbfriends.js
removing media/js/streams.js
adding media/js/templetizer.js
[...]
$ hg log
$ hg log
changeset:   10:ce3ad416d9a5
tag:         tip
user:        Mihai
date:        Sat Sep 10 22:34:35 2011 -0700
summary:     Save all.
changeset:   9:ceacb7b2192a
user:        Mihai
date:        Sat Sep 10 22:25:34 2011 -0700
summary:     Mootools update.
[...]
一些浏览:

$ hg checkout 8

好吧。然后我想修改第十版。愚蠢地,我这么做了:

$ hg rollback
rolling back to revision 9 (undo commit)
$ hg status
[...]
M media/js/mootools.js
R media/js/streams.js
! media/js/fbfriends.js
! media/js/templetizer.js
[...]

WTF ?我的两个文件到哪里去了????

$ hg log
changeset:   9:ceacb7b2192a
tag:         tip
user:        Mihai
date:        Sat Sep 10 22:25:34 2011 -0700
summary:     Mootools update.
[...]

好的,我会找出。origin文件:

$ hg revert --all
[...]
undeleting media/js/streams.js
forgetting media/js/templetizer.js
reverting media/js/mootools.js
[...] // media/js/fbfriends.js doesn't even show up
$ hg status
? media/js/mootools.js.orig
$ hg history
changeset:   9:ceacb7b2192a
tag:         tip
user:        Mihai
date:        Sat Sep 10 22:25:34 2011 -0700
summary:     Mootools update.

NOOOOOO !当我做回滚时,我被狠狠地训斥了一遍。恢复尝试失败:

$ hg checkout 10
8 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ find -name temp
$ hg checkout 9
30 files updated, 0 files merged, 63 files removed, 0 files unresolved
$ find -name temp
$ hg checkout ce3ad416d9a5
abort: unknown revision 'ce3ad416d9a5'!
$ hg checkout ceacb7b2192a
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ find -name temp
$

但,但……我把它推进去了!应该还在。hg的某个地方吧?帮助吗?git refloggit checkout blah在一些情况下救了我,但有汞的等价物吗?

编辑:使摘要清晰。编辑2:更好的标题。

对不起,他们不在了。

rollback命令的帮助摘要如下:

roll back the last transaction (dangerous)

,接着说:

This command should be used with care. There is only one level of
rollback, and there is no way to undo a rollback. It will also restore the
dirstate at the time of the last transaction, losing any dirstate changes
since that time. This command does not alter the working directory.

Rollback是唯一的非扩展mercurial命令,用于删除历史记录,并且已经讨论过将其移动到默认禁用的扩展中,就像它的类似破坏性表兄弟strippurge一样。

并不是说它现在对您有帮助,而是在将来进行回滚之前进行克隆。或者更好的是做一个backout代替。Backout添加更改的反向,产生相同的提示修订,但具有更准确的历史记录("I did this","I undid it")。

最新更新