Компьютеры · Инструкция
Почему Git submodule находится в detached HEAD и как в нём работать
Из родителя выполните `git submodule status` и запишите ожидаемый SHA. Перейдите в submodule и выполните `git status` и
Короткий ответ
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`.
Исправление
- Сделайте commit и push внутри самого submodule.
- Вернитесь в родительский репозиторий: `git status` должен показать изменённый submodule pointer.
- Добавьте каталог 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.