Я потерял свою последнюю фиксацию, потому что я случайно выполнил "сброс мерзавца - твердый HEAD^ ".Примечание: Я не хотел помещать" ^" в конец.
Там какой-либо путь состоит в том, чтобы вернуть его? Это были 2 дня работы :(
Я думаю, что эта статья - это то, что вы ищете. Согласно статье, ваша фиксация «утеряна», но не собрана мусором - что-то вроде корзины в Windows.
Вы запускаете git fsck --lost-found
, чтобы найти «болтающийся коммит», и просматриваете его с помощью git reflog
, затем объединяете болтающийся коммит с вашей текущей веткой, git merge 7c61179
.
git позволяет очень легко вернуться к предыдущему состоянию и работает очень сложно предотвратить потерю каких-либо данных, которые вы передали. По этой причине вам следует часто совершать коммит. У меня есть команда git trash
, которая выполняет это состояние git reset --hard
, но после записи фиксации, так что я могу отменить полный сброс, если мне нужно.
Для самого последнего состояния (т.е. вашего точного случая) просто выполните git reset --hard ORIG_HEAD
, чтобы отменить то, что вы только что сделали.
Вы можете выполнить сброс по времени : git reset --hard '@ {5 minutes ago}'
, чтобы вернуться в предыдущее состояние в зависимости от времени (есть много вариантов вы можете использовать, например, git reset --hard '@ {terday}'
, чтобы притвориться, что сегодня никогда не было).
В противном случае просмотрите вывод git reflog
, чтобы найти объект до того, как действие, которое, по вашему мнению, поставит вас в плохое состояние, и сбросит его.
Если вы знаете идентификатор фиксации (например, прокрутите назад на своем терминале или используйте git reflog
),
git reset --hard 61567de5d9
Где 61567de5d9 - первые цифры последней (утерянной) фиксации.