Ответ 1
Субмодули всегда проверяются в режиме отключенного HEAD.
Это потому, что подмодуль проверяет SHA1, хранящийся в специальной записи в индексе родительского репо.
Кроме того, если вы хотите, чтобы подмодуль следовал ветке, зарегистрированной в .gitmodules
, вам нужно:
git submodule update --init --remote
--remote
сделает git fetch
, а также проверку нового HEAD
.
Увы, даже эта проверка будет иметь фиксацию, а не ветку (поскольку у вас нет локальной ветки по умолчанию в подмодуле), поэтому... вернуться в автономный режим HEAD
.
См. Больше в разделе Git подмодулей: укажите ветку/тег".
Вы можете попробовать (не тестировать) a:
git submodule foreach 'git checkout -b $(git config -f /path/to/parent/repo/.gitmodules --get submodule.$path.branch)'
Я использую тот факт, что git submodule foreach
имеет доступ к '$path
', названию каталога подмодуля относительно суперпроекта.
Произошла попытка указать ветвь для автоматического выделения субмодуля в (commit 23d25e4 для Git 2.0).... но он был отменен (commit d851ffb, 2 апреля 2014 года)!
Это может произойти в ближайшее время, но не в его текущей реализации.