Описание тега git-detached-head

Используйте этот тег для вопросов о репозитории Git в режиме "отключенной HEAD". Репозиторий находится в этом режиме, если в `git status` указано"HEAD detached at ..."или"HEAD detached from ..."

В репозитории gitотсоединенная HEAD - это режим, в которомHEADсодержит необработанный хэш-идентификатор фиксации. Этот режим или состояние, возможно, лучше всего определить, противопоставив его более типичному присоединенному состоянию HEAD. Когда прикреплен HEAD репозитория, специальный файл.git/HEADсодержит имя текущей ветки. Это результат работыgit checkout branch-name, который помещает вас в ветку с именем branch-name. То есть ваш HEAD обычно прикреплен к некоторой ветке, так что Git знает, в какой ветке вы находитесь. Но HEAD Git легко отсоединяется от этой ветки, так что он может перейти в другую ветку или даже напрямую в коммит.

Находясь в этом отдельном режиме HEAD, Git сообщит вам, что вы не находитесь ни в какой ветке. Например, бегgit branch может напечатать:

* (HEAD detached at 3e5524907)
  master

а также git status скажу HEAD detached ..., скорее, чем on branch ...(см. git-status).

Отсоединенный HEAD не является состоянием ошибки, но это также не типичный режим, в котором кто-то работает в репозитории. Чаще всего вы увидите это в одной из следующих ситуаций:

  • во время приостановленной интерактивной перебазировки (см. git-rebase), когда вы выбираете редактирование некоторых коммитов;
  • во время любой перезагрузки, которая приостанавливается из-за конфликтов;
  • во время нормальной работы большинства подмодулей (см. git-submodules).

Вы также попадете в состояние "отсоединенной HEAD", проверив любую фиксацию, используя любое имя, которое само по себе не является именем ветки. Например,git checkout origin/masterчасто проверяет тот же коммит, что иgit checkout master, но с тех пор origin/master- это имя удаленного отслеживания, а не имя ветки, вы будете в состоянии "отключенной HEAD".

Самый простой способ восстановления, если вы неожиданно оказались в этом состоянии - например, у вас нет переустановки для продолжения (если вы не уверены, используйте git status чтобы узнать) - просто проверить ветку по имени, например, git checkout master. Однако, если вы сделали новые коммиты в этом состоянии, подумайте о создании имени ветки для их записи.