Что такое HEAD в Git?

«Что такое HEAD в Git?» — вопрос из категории HTTP и веб-протоколы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HEAD в Git — это специальный указатель, который всегда ссылается на текущий, активный коммит в рабочем дереве. Это «снимок», на основе которого вы работаете.

Два состояния HEAD:

  1. Привязан к ветке (обычный режим): HEAD указывает на ветку (например, refs/heads/main), а та — на последний коммит. Новые коммиты двигают ветку и HEAD вместе.
  2. Отсоединённый HEAD (detached HEAD): HEAD указывает напрямую на конкретный коммит, а не на ветку. Это происходит при checkout тега или конкретного хеша коммита.

Практические команды:

# Узнать, на какой коммит указывает HEAD
git rev-parse HEAD

# Узнать, на какую ветку указывает HEAD (не сработает в detached состоянии)
git symbolic-ref HEAD

# Выйти из состояния detached HEAD, создав новую ветку от текущего коммита
git switch -c new-branch-name

Важно: Прямые коммиты в состоянии detached HEAD могут быть потеряны, если не создать от них ветку.