Оригинальный ответ 2010
Как отмечает joschi в комментариях, git submodule
теперь поддерживает параметр --recursive
(Git1.6.5 и более).
Если указано --recursive
, эта команда вернется в зарегистрированные подмодули и обновит все вложенные подмодули внутри.
См. Рекурсивная работа с подмодулями git для части init.
Подробнее см. git submodule
.
В git версии 1.6.5 и выше вы можете сделать это автоматически, клонировав супер-проект с опцией –-recursive
:
git clone --recursive git://github.com/mysociety/whatdotheyknow.git
Обновление 2016, с git 2.8: см. « Как ускорить / распараллелить загрузку подмодулей git с помощью git clone --recursive
? »
Вы можете инициировать выборку субмодуля параллельно, используя несколько потоков.
Для примеров:
git fetch --recurse-submodules -j2
Еще лучше, с Git 2.23 (Q3 2019), вы можете клонировать и извлечь субмодуль в их ветку трекинга одной командой!
См. коммит 4c69101 (19 мая 2019 г.) Бен Ависон (``) .
(Объединено с Junio C Hamano - gitster
- в коммит 9476094 , 17 июня 2019 г.)
clone
: добавить --remote-submodules
флаг
При использовании git clone --recurse-submodules
ранее не было никакого способа
передайте --remote
switch неявной команде git submodule update
для
любой случай использования, когда вы хотите, чтобы субмодули были проверены на их
ветвь удаленного слежения, а не SHA-1, записанная в суперпроекте.
Этот патч исправляет эту ситуацию.
На самом деле он также передает --no-fetch
в git submodule update
на том основании, что субмодуль только что был клонирован, поэтому выборка с пульта снова лишь замедляет процесс.
Это значит:
--[no-]remote-submodules:
Все подмодули, которые клонируются, будут использовать состояние ветви удаленного отслеживания подмодуля для обновления подмодуля, а не записанного SHA-1 суперпроекта. Эквивалент прохождения от --remote
до git submodule update
.