Разработчик выполнил:
git reset --hard HEAD~1
После этого запаниковал — команда удалила коммит
с 3 часами работы.
Можно ли восстановить изменения?
A) Нет — hard reset навсегда удаляет коммиты
B) Да — git reflog хранит недавние позиции HEAD, оттуда можно восстановиться
C) Да — но только если коммит был запушен в remote
D) Нет — только при наличии локального бэкапа
Правильный ответ: B
git reset --hard удаляет ссылку на коммит из текущей ветки, но сам объект коммита обычно ещё остаётся в локальном репозитории.Восстановление:
git reflog
Git покажет историю перемещений HEAD:
abc1234 HEAD@{1}: commit: add payment retry logic
def5678 HEAD@{0}: reset: moving to HEAD~1Дальше можно вернуть состояние:
git reset --hard abc1234
или создать новую ветку:
git checkout -b recovery abc1234
Пока не сработал garbage collector и объекты не были очищены, коммит восстанавливается без проблем.
👉 Java Portal
