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