Проще говоря, состояние отсоединенного HEAD означает , что вы не проверены на HEAD (или на острие) какой-либо ветви .
Поймите с примером
AВ большинстве случаев ветвление представляет собой последовательность нескольких коммитов, например:
Фиксация 1: master -> branch_HEAD (123be6a76168aca712aea16076e971c23835f8ca)
Фиксация 2: master -> 123be6a76168aca712aea16076e971c23835f8ca -> branch_HEAD (100644a76168aca712aea16076e971c23835f8ca)
Как вы можете видеть выше в случае последовательности коммитов, ваша ветвь указывает на ваш последний коммит.Таким образом, в этом случае, если вы извлекаете, чтобы совершить 123be6a76168aca712aea16076e971c23835f8ca , то вы бы находились в состоянии отсоединенной головы, поскольку HEAD вашей ветви указывает на 100644a76168aca712aea16076e971c23835f8ca из тех, в которых вы не проверены и не являетесь 1010 *.Следовательно, вы находитесь в отсоединенном состоянии HEAD.
Теоретическое объяснение
В этом блоге ясно говорится, что репозиторий Git является деревом коммитов, с каждым коммитомуказатель на своего предка с каждым указателем фиксации обновляется, и эти указатели на каждую ветвь хранятся в подкаталогах .git / refs.Теги хранятся в .git / refs / tags, а ветки хранятся в .git / refs /head.Если вы посмотрите на любой из файлов, то обнаружите, что каждый тег соответствует одному файлу с хешем фиксации из 40 символов, и, как объяснено выше @Chris Johnsen и @Yaroslav Nikitenko, вы можете проверить эти ссылки.