n1ro°
RU

Компьютеры · Инструкция

Почему Git submodule находится в detached HEAD и как в нём работать

Из родителя выполните `git submodule status` и запишите ожидаемый SHA. Перейдите в submodule и выполните `git status` и

Редакция N1RO · Проверено

Короткий ответ

Detached HEAD внутри submodule после update обычно нормален, потому что родитель фиксирует конкретный SHA; для редактирования создайте ветку внутри submodule, push commit и затем зафиксируйте новый pointer в родительском репозитории.

Проверка по порядку

  • Из родителя выполните `git submodule status` и запишите ожидаемый SHA.
  • Перейдите в submodule и выполните `git status` и `git remote -v`.
  • До новых commit создайте рабочую ветку `git switch -c fix/submodule-change`.

Исправление

  1. Сделайте commit и push внутри самого submodule.
  2. Вернитесь в родительский репозиторий: `git status` должен показать изменённый submodule pointer.
  3. Добавьте каталог submodule и сделайте отдельный commit в родителе, затем проверьте чистый update.

Как понять, что исправлено

  • Commit submodule доступен в remote, а superproject фиксирует новый gitlink SHA и после чистого update получает тот же commit.

Важно

Commit внутри detached HEAD submodule легко потерять при следующем update. Для разработки сначала создайте/переключите ветку и только затем commit.

Что учитывать

Commit внутри detached HEAD submodule легко потерять при следующем update. Для разработки сначала создайте/переключите ветку и только затем commit.

Источники и проверка

Фактическая часть сверена по первичным источникам (в т.ч. git-submodule Documentation). Пример и формулировки — редакция N1RO на 2026-09-17.