Question Comment `git clone`, y compris les sous-modules?


J'essaie de mettre un sous-module dans un repo.

Le problème est que lorsque je clone le repo parent, le dossier submodule est entièrement vide.

Est-il possible de faire en sorte que 'git clone parent' place les données dans le dossier sous-module?

Exemple: http://github.com/cwolves/sequelize/tree/master/lib/

nodejs-mysql-native pointe vers un git externe, mais quand je vérifie la sequelize projet, ce dossier est vide ...


1462
2017-09-26 07:13


origine


Réponses:


Avec la version 2.13 de Git et plus tard, --recursive a été déprécié et --recurse-submodules devrait être utilisé à la place:

git clone --recurse-submodules -j8 git://github.com/foo/bar.git
cd bar

Note de l'éditeur: -j8 est une optimisation des performances optionnelle qui est devenue disponible dans la version 2.8, et récupère jusqu'à 8 sous-modules à la fois en parallèle - voir man git-clone.

Avec la version 1.9 de Git jusqu'à la version 2.12 (-j drapeau disponible uniquement dans la version 2.8+):

git clone --recursive -j8 git://github.com/foo/bar.git
cd bar

Avec la version 1.6.5 de Git et plus tard, vous pouvez utiliser:

git clone --recursive git://github.com/foo/bar.git
cd bar

Pour les repos déjà clonés, ou les anciennes versions de Git, utilisez:

git clone git://github.com/foo/bar.git
cd bar
git submodule update --init --recursive

2307
2017-12-14 10:43



Vous devez faire deux choses avant qu'un sous-module ne soit rempli:

git submodule init 
git submodule update

352
2017-09-26 07:19



Réponse originale 2010

Comme Joschi mentionne dans les commentaires, git submodule supporte maintenant le --recursive option (Git1.6.5 et plus).

Si --recursive est spécifié, cette commande sera recurrée dans les sous-modules enregistrés et mettra à jour tous les sous-modules imbriqués à l'intérieur.

Voir Travailler avec les sous-modules git récursivement pour la partie init.
Voir git submodule expliqué pour plus.

Avec la version 1.6.5 de git et plus tard, vous pouvez le faire automatiquement en clonant le super-projet avec le –-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 l'extraction du sous-module en utilisant plusieurs threads, en parallèle.
Par exemple:

git fetch --recurse-submodules -j2

140
2017-09-26 08:17



Vous pouvez utiliser cette commande pour cloner votre repo avec tous les sous-modules:

git clone --recursive YOUR-GIT-REPO-URL

Ou si vous avez déjà cloné le projet, vous pouvez utiliser:

git submodule init
git submodule update

31
2017-10-16 15:47



Si votre sous-module a été ajouté dans une branche, assurez-vous de l'inclure dans votre commande clone ...

git clone -b <branch_name> --recursive <remote> <directory>

27
2018-03-07 22:28



Essaye ça:

git clone --recurse-submodules

Il extrait automatiquement les données du sous-module en supposant que vous avez déjà ajouté les sous-modules au projet parent.


21
2018-01-16 18:39



réponse tardive

// git CLONE INCLUDE-SUBMODULES ADDRESS DESTINATION-DIRECTORY
git clone --recursive https://USERNAME@bitbucket.org/USERNAME/REPO.git DESTINATION_DIR

Comme je viens de passer une heure entière à jouer avec un ami: Même si vous avez des droits d'administrateur sur BitBucket, clonez toujours le dépôt ORIGINAL et utilisez le mot de passe de celui qui possède le repo. Agaçant de découvrir que vous avez couru dans ce minetrap: P


17
2018-02-16 16:10



L'extraction parallèle des sous-modules vise à réduire le temps nécessaire pour récupérer les dépôts et tous les sous-modules connexes en permettant l'extraction simultanée de plusieurs référentiels. Cela peut être accompli en utilisant la nouvelle option --jobs, par exemple:

git fetch --recurse-submodules --jobs=4

Selon l'équipe de Git, cela peut accélérer considérablement la mise à jour des référentiels contenant de nombreux sous-modules. Lorsque vous utilisez --recurse-submodules sans la nouvelle option --jobs, Git va chercher les sous-modules un par un.

La source: http://www.infoq.com/news/2016/03/git28-released


7
2018-04-06 12:07



Essayez ceci pour inclure des sous-modules dans le dépôt git.

git clone -b <branch_name> --recursive <remote> <directory>

ou

git clone --recurse-submodules

7
2018-02-05 04:54



Essaye ça.

git clone -b <branch_name> --recursive <remote> <directory>

Si vous avez ajouté le sous-module dans une branche, assurez-vous de l'ajouter à la commande clone.


1
2018-06-18 08:29