Ответ 1
После клонирования репозитория, содержащего ваши подмодули, следующая команда будет проверять главную ветвь на все это за один раз:
git submodule foreach --recursive git checkout master
Мне очень нравится эта команда для получения репо с подмодулями:
git clone [email protected]:my_user/my_repo.git --recursive
Однако, когда они приходят, подмодули настроены на "отсутствие ветки", и мне приходится вручную проверять мастер на каждом из них. Есть ли способ рекурсивно вытащить подмодули и автоматически настроить ветвь?
После клонирования репозитория, содержащего ваши подмодули, следующая команда будет проверять главную ветвь на все это за один раз:
git submodule foreach --recursive git checkout master
Как насчет:
git submodule update --init --recursive
Инициализировать все подмодули и подмодули внутри подмодулей. Не уверен, что это будет мастер проверки, хотя.
Вопрос в том, почему вы проверяете мастера. Ваши вспомогательные модули привязаны к определенному шагу, что также объясняет, почему клоны подлого модуля привязаны к этой конкретной фиксации. Не указывая на конкретный sha, внешнее репо может легко сломать ваши сборки. Скорее всего, не то, что вы хотите. Лучше обновляйте сознательно. Сборка должна быть воспроизводимой и фиксированной.
Возможно, вам стоит рассмотреть gitslave как альтернативу git -submodule, в зависимости от вашего рабочего процесса разработки это может быть лучше (или хуже). В частности, в вашей проблеме gitslave сохраняет всех членов суперпроекта в той же ветки (отсутствуют специальные команды git (not gitslave), чтобы сделать иначе, и даже тогда многие команды предупреждают вас, когда вы находитесь на разных ветвях).
Gitslave полезна, когда вы контролируете и разрабатываете на подпроектах более чем в то же время, чем суперпроект, и, кроме того, когда вы как правило, хотят одновременно тегировать, разветвлять, нажимать, вытягивать и т.д. все репозитории.
git -подмодуль лучше, если вы не контролируете подпроекты или, более конкретно, хотите исправить подпроект в конкретной ревизии, даже если подпроект изменяется.