Ветвление
Урок 5~12 минут
Detached HEAD: что это и как исправить
HEAD detached at abc1234 — одно из самых пугающих сообщений для новичков. На самом деле всё просто.
Как устроен HEAD
В норме HEAD указывает на ветку, а ветка — на коммит:
HEAD → main → коммит C
В detached HEAD, HEAD указывает напрямую на коммит:
HEAD → коммит C (минуя ветку)
Как попасть в detached HEAD
bash
# Checkout конкретного коммита
git checkout abc1234
# Checkout тега
git checkout v1.0
# Checkout remote ветки без создания локальной
git checkout origin/mainGit честно предупредит:
Note: switching to 'abc1234'.
You are in 'detached HEAD' state...
Что можно делать
Читать файлы, запускать код, делать коммиты — всё работает. Но:
HEAD → C → D → E ← твои новые коммиты
↑ никакая ветка не знает об этих коммитах!
Когда переключишься на main, коммиты D и E станут недостижимы и будут удалены сборщиком мусора.
Как сохранить работу
Создай ветку до переключения:
bash
# Вариант 1: современный синтаксис
git switch -c feature/my-experiment
# Вариант 2: классический
git checkout -b feature/my-experimentТеперь ветка указывает на твои коммиты — они в безопасности.
Если уже переключился
Если уже ушёл с detached HEAD и хочешь вернуть коммиты, используй git reflog:
bash
git reflog
# abc1234 HEAD@{1}: commit: feat: моя работа
# ...
git switch -c recovery abc1234 # создать ветку из потерянного коммитаreflog хранит историю всех перемещений HEAD — обычно 90 дней.
Когда detached HEAD полезен
- Посмотреть как выглядел проект в конкретный момент
- Запустить старую версию для отладки
- Сделать одноразовый эксперимент без создания ветки
bash
git checkout v1.0 # смотришь старую версию
# ... изучаешь ...
git switch main # возвращаешься, ничего не меняяКоманды
bash
git log --oneline # найти хэш нужного коммита
git checkout abc1234 # войти в detached HEAD
git switch -c new-branch # создать ветку из detached HEAD
git switch main # выйти, потеряв uncommitted изменения
git reflog # найти потерянные коммитыDetached HEAD — не ошибка, это режим 'только чтение'. Коммиты можно делать, но они потеряются после переключения на ветку. Создай ветку если нужно сохранить работу.
🌿
Визуализация ветокшаг 0 / 6УГЛУБЛЁННОЕ ЧТЕНИЕ
Полная статья: Ветвление
Теория, примеры и разбор темы в одном месте