>_ IzzyLab

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

Спаси коммит из detached HEAD

сложно

В /root/repo кто-то сделал git checkout на старый коммит (репозиторий сейчас в состоянии «detached HEAD»), наработал там новый коммит с важным файлом rescue.txt (содержимое IMPORTANT) — и этот коммит не привязан ни к одной ветке: стоит переключиться на main, и он потеряется. Не теряя его, сохрани текущий коммит в новую ветку с именем rescue, чтобы rescue.txt уцелел.

Что потренируешь:
  • detached HEAD
  • git branch
  • git switch
  • git reflog
  • ссылки на коммиты

Разбор темы

«Detached HEAD» — это состояние, когда HEAD указывает прямо на коммит, а не на ветку. Такой коммит ничем не удерживается: стоит переключиться на ветку, и он становится недостижимым и рано или поздно попадёт под сборку мусора. Спасение — привязать к нему ссылку-ветку, пока ты на нём стоишь (git branch создаёт ветку на текущем коммите, git switch -c — создаёт и сразу переходит). Даже если коммит уже «потерян», его хеш ещё виден в git reflog, и ветку можно навесить по хешу.

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

  1. ветка rescue существует
  2. rescue.txt сохранён в ветке

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