Git 2.23 (Q3 2019): si vous souhaitez cloner et mettre à jour les sous-modules vers leur dernière révision:
git clone --recurse-submodules --remote-submodules
Si vous voulez simplement les cloner sur leur SHA1 enregistré:
git clone --recurse-submodules
Voir ci-dessous.
Réponse originale 2010
Comme le mentionne joschi dans les commentaires, git submodule
prend désormais en charge l' --recursive
option (Git1.6.5 et plus).
Si --recursive
est spécifié, cette commande récursive dans les sous-modules enregistrés et mettra à jour tous les sous-modules imbriqués à l'intérieur.
Voir Utilisation récursive des sous-modules git pour la partie init.
Voir git submodule
expliqué pour plus.
Avec la version 1.6.5 de git et versions ultérieures, vous pouvez le faire automatiquement en clonant le super-projet avec l' –-recursive
option:
git clone --recursive git://github.com/mysociety/whatdotheyknow.git
Mise à jour 2016, avec git 2.8: voir " Comment accélérer / paralléliser les téléchargements de sous-modules git en utilisant git clone --recursive
? "
Vous pouvez lancer la récupération du sous-module à l'aide de plusieurs threads, en parallèle.
Par exemple:
git fetch --recurse-submodules -j2
Encore mieux, avec Git 2.23 (Q3 2019), vous pouvez cloner et extraire le sous-module vers leur branche de suivi en une seule commande!
Voir commit 4c69101 (19 mai 2019) de Ben Avison ( bavison
) .
(Fusionné par Junio C Hamano - gitster
- dans commit 9476094 , 17 juin 2019)
clone
: ajouter un --remote-submodules
indicateur
Lors de l'utilisation, git clone --recurse-submodules
il était auparavant impossible de passer un --remote
commutateur à la git submodule update
commande implicite pour tout cas d'utilisation où vous souhaitez que les sous-modules soient extraits sur leur branche de suivi à distance plutôt qu'avec le SHA-1 enregistré dans le superprojet.
Ce patch corrige cette situation.
Il passe en fait --no-fetch
à git submodule update
aussi bien sur le terrain , ils le sous - module vient seulement d' être clonés, donc aller chercher la télécommande seulement sert à nouveau ralentir les choses.
Cela signifie:
--[no-]remote-submodules:
Tous les sous-modules qui sont clonés utiliseront l'état de la branche de suivi à distance du sous-module pour mettre à jour le sous-module, plutôt que le SHA-1 enregistré du superprojet. Équivalent à passer --remote
à git submodule update
.
git clone --recurse-submodules --remote-submodules
(Q3 2019 Git 2.23): elle clonera et mettra à jour les sous-modules en une seule commande. Voir ma réponse modifiée ci-dessous .