Здесь, кажется, также много путаницы в ответах.
git submodule init
- это , а не , предназначенный для магического генерирования вещей в .git / config (из .gitmodules). Он предназначен для установки чего-либо в полностью пустой подкаталог после клонирования родительского проекта или получения коммита, который добавляет ранее несуществующий подмодуль.
Другими словами, вы следуете за git clone
проекта, который имеет подмодули (что вы узнаете по тому факту, что клон извлек файл .gitmodules) за git submodule update --init --recursive
.
Вы не следите git submodule add ...
с git submodule init
(или git submodule update --init
), который не должен работать. Фактически, дополнение уже обновит соответствующий .git / config, если все будет работать.
EDIT
Если ранее не существовавший подмодуль git был добавлен кем-то другим, и вы делаете git pull
этого коммита, то каталог этого подмодуля будет полностью пустым (когда вы выполните git submodule status
хеш нового подмодуля должен быть видимым, но будет иметь -
перед ним.) В этом случае вам необходимо следовать за git pull
также git submodule update --init
(плюс --recursive
, когда это подмодуль внутри подмодуля), чтобы получить новый, ранее не существующий, проверенный субмодуль; точно так же, как после первоначального клона проекта с подмодулями (где, очевидно, у вас не было этих подмодулей раньше).