Восстановить потерянные файлы после фиксации и отката в Mercurial. (Эквивалент git reflog?)
Заданная работа. Был откат, когда я не был на кончике репо. Потерянные файлы. Ищите git reflog эквивалент для сохранения моей работы.
Long:
Поэтому я заканчиваю работу, а затем фиксирую.
$ 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
Хорошо. Затем я хотел изменить версию 10. Глупо, я делаю:
$ 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.
[...]
Хорошо, я выясню файлы .orig:
$ 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! Я был по-королевски fscked для того, чтобы быть на фиксации 8, когда я сделал откат.
Не удалось выполнить попытки восстановления:
$ 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 reflog
, git checkout blah
сохранили меня в нескольких экземплярах, но существуют ли какие-либо меркуриальные эквиваленты?
РЕДАКТИРОВАТЬ: Сделано краткое изложение.
EDIT2: Лучшее название.
Ответы
Ответ 1
Извините, их нет.
Сводка справки для команды 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.
Откат - единственная нерушимая команда mercurial, которая удаляет историю, и говорили о переносе ее на расширение по умолчанию по умолчанию, подобное тому же деструктивным кузенам strip
и purge
.
Не то, чтобы это помогло вам сейчас, но в будущем клон перед откат. Или еще лучше сделать backout
. Backout добавляет инверсию изменения, давая ту же результирующую ревизию, но с более точной историей ( "Я сделал это", "Я расстегнул ее" ).