Потерянная последняя фиксация мерзавца

Я потерял свою последнюю фиксацию, потому что я случайно выполнил "сброс мерзавца - твердый HEAD^ ".Примечание: Я не хотел помещать" ^" в конец.

Там какой-либо путь состоит в том, чтобы вернуть его? Это были 2 дня работы :(

12
задан Jon Seigel 8 March 2010 в 02:05
поделиться

3 ответа

Я думаю, что эта статья - это то, что вы ищете. Согласно статье, ваша фиксация «утеряна», но не собрана мусором - что-то вроде корзины в Windows.

Вы запускаете git fsck --lost-found , чтобы найти «болтающийся коммит», и просматриваете его с помощью git reflog , затем объединяете болтающийся коммит с вашей текущей веткой, git merge 7c61179 .

26
ответ дан 2 December 2019 в 03:02
поделиться

git позволяет очень легко вернуться к предыдущему состоянию и работает очень сложно предотвратить потерю каких-либо данных, которые вы передали. По этой причине вам следует часто совершать коммит. У меня есть команда git trash , которая выполняет это состояние git reset --hard , но после записи фиксации, так что я могу отменить полный сброс, если мне нужно.

Для самого последнего состояния (т.е. вашего точного случая) просто выполните git reset --hard ORIG_HEAD , чтобы отменить то, что вы только что сделали.

Вы можете выполнить сброс по времени : git reset --hard '@ {5 minutes ago}' , чтобы вернуться в предыдущее состояние в зависимости от времени (есть много вариантов вы можете использовать, например, git reset --hard '@ {terday}' , чтобы притвориться, что сегодня никогда не было).

В противном случае просмотрите вывод git reflog , чтобы найти объект до того, как действие, которое, по вашему мнению, поставит вас в плохое состояние, и сбросит его.

22
ответ дан 2 December 2019 в 03:02
поделиться

Если вы знаете идентификатор фиксации (например, прокрутите назад на своем терминале или используйте git reflog ),

git reset --hard 61567de5d9

Где 61567de5d9 - первые цифры последней (утерянной) фиксации.

7
ответ дан 2 December 2019 в 03:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: