У меня есть родительский проект с подмодулем (без вложенных подмодулей). Подмодуль имеет новый коммит (назовем его new-sha
), и родитель ссылается на этот коммит в удаленном репо (я вижу submodule @ new-sha
при просмотре репо в веб-браузере).
Я вытащил родительский проект, и он также ссылается на правильный коммит в рабочем каталоге, как показано в git show
output:
--- a/submodule
--- b/submodule
@@ -1 +1 @@
-Subproject commit old-sha
+Subproject commit new-sha
т.е. последний коммит в родительском проекте изменил подмодуль на new-sha
. Однако, ни git submodule update
, ни git pull --recurse-submodules
не обновляются до new-sha
в подмодуле, они всегда проверяют old-sha
.
Почему и как это исправить?
git version 2.21.0.windows.1
Некоторая дополнительная информация: подмодуль имеет sha-new
локально, но его заголовок застрял на sha-old
.
sha-new
немедленно получен из sha-old
, и вот последние 3 коммита, возможно это может дать подсказку:
sha-new == the top of submodule's branch used by parent project
sha-old == HEAD
sha-xyz == origin/HEAD
Строка origin/HEAD
беспокоит меня. Даже после ручного извлечения субмодуля (cd submodule; git pull origin branch-name:branch-name
) origin/HEAD
остался на третьем коммите сверху.