>_ IzzyLab

Практическое задание

Верни потерянный коммит через reflog

сложно

В репозитории /root/repo был коммит add important с файлом important.txt (содержимое topsecret), но кто-то выполнил git reset --hard и этот коммит пропал из ветки main: сейчас в истории один коммит init, а important.txt отсутствует. Восстанови потерянный коммит: important.txt должен вернуться с прежним содержимым, а в истории main снова должно быть два коммита. Найди потерянный коммит через журнал ссылок.

Что потренируешь:
  • git reflog
  • восстановление коммитов
  • reset --hard
  • HEAD@{n}
  • dangling commit

Разбор темы

Когда ветка перестаёт указывать на коммит (например, после жёсткого сброса), сам объект коммита не стирается сразу — он становится «висячим» и ещё какое-то время живёт в базе, пока его не соберёт сборщик мусора. Все перемещения HEAD git пишет в отдельный журнал ссылок, который читается через git reflog; по нему можно найти хеш утерянного коммита и снова навести на него ветку. Это спасательный круг после ошибочных reset, rebase или удаления веток.

Что проверяется

  1. important.txt восстановлен
  2. содержимое верное
  3. в истории два коммита

Как это выглядит