HEAD — ссылка на текущий checkout: обычно tip активной ветки; в detached state — непосредственно на commit.
Нормальное состояние
.git/HEAD содержит ref: refs/heads/master (или main). Ветка указывает на commit — HEAD «следует» за веткой.
Detached HEAD
Возникает при checkout commit/tag/remote branch без local branch:
.git/HEAD = raw SHA1.
- Новые commits не привязаны к ветке — легко «потерять» без branch/tag.
- Типично при interactive rebase (
edit).
Практика
Перед commit проверяйте git branch --show-current. В detached — создайте ветку: git switch -c fix-wip.
Итог
HEAD = «где вы сейчас»; detached HEAD — commit без ветки, осторожно с новыми commits.