Ответ
HEAD — это специальный указатель в Git, который всегда ссылается на текущий коммит в рабочем дереве. Это «точка, где вы сейчас находитесь» в истории коммитов.
Два основных состояния HEAD:
-
Привязанный (Attached) HEAD Указывает на ветку, а ветка, в свою очередь, указывает на коммит. При создании нового коммита ветка продвигается вперед, и HEAD движется вместе с ней.
# HEAD указывает на ветку 'main' $ cat .git/HEAD ref: refs/heads/main -
Отсоединенный (Detached) HEAD HEAD указывает напрямую на конкретный коммит, а не на ветку. Это состояние возникает при:
- Переходе на конкретный тег или коммит.
- Просмотре истории.
# Переход в состояние detached HEAD $ git checkout a1b2c3d4 Note: switching to 'a1b2c3d4'... You are in 'detached HEAD' state...
Практическое значение и команды:
- Создание коммита в detached HEAD создаст новый коммит, который не будет принадлежать ни одной ветке и может быть потерян для сборщика мусора Git.
- Чтобы сохранить изменения из detached HEAD, создайте новую ветку:
# Находясь в detached HEAD, создать ветку от текущего коммита $ git branch new-feature-branch $ git checkout new-feature-branch - Команды, которые используют/меняют HEAD:
git checkout,git reset,git commit,git merge.
Важно: Большую часть времени вы должны работать с привязанным HEAD, чтобы ваши коммиты автоматически продвигали ветку.