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 dossier parent repo, le dossier submodule est entièrement vide.
y a-t-il un moyen de faire en sorte que 'git clone parent' mette réellement des données dans le dossier submodule?
exemple: http://github.com/cwolves/sequelize/tree/master/lib/
nodejs-mysql-native
désigne un git externe, mais quand je vérifie le projet sequelize
, ce dossier est vide...
10 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 optionnelle des performances 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 (drapeau -j
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 des versions plus anciennes de Git, utiliser:
git clone git://github.com/foo/bar.git
cd bar
git submodule update --init --recursive
vous devez faire deux choses avant qu'un sous-module ne soit rempli:
git submodule init
git submodule update
réponse originale 2010
comme joschi mentions dans les commentaires, git submodule
supporte maintenant l'option --recursive
(Git1.6.5 et plus).
si
--recursive
est spécifié, cette commande se retrouvera dans les sous-modules enregistrés, et mettra à jour tous les sous-modules imbriqués à l'intérieur.
Voir avec Git submodules 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 l'option
–-recursive
:
git clone --recursive git://github.com/mysociety/whatdotheyknow.git
mise à jour 2016, avec git 2.8: voir " Comment faire accélérer / paralléliser les téléchargements de sous-modules git en utilisant git clone --recursive
? "
vous pouvez initier la récupération du sous-module en utilisant plusieurs threads, en parallèle.
Pour les instances:
git fetch --recurse-submodules -j2
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
Si votre sous-module a été ajouté dans une branche assurez-vous d'inclure dans votre commande clone...
git clone -b <branch_name> --recursive <remote> <directory>
essayez ceci:
git clone --recurse-submodules
Il tire automatiquement dans les données de sous-module en supposant que vous avez déjà ajouté les sous-modules au projet parent.
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 à tripoter 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 la pension. Ennuyeux de découvrir que vous avez couru dans ce minetrap :p
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
Submodules parallel fetch vise à réduire le temps requis pour récupérer un dépôt et tous ses sous-modules connexes en permettant la récupération de plusieurs dépôts à la fois. Ceci peut être accompli en utilisant l'option new --jobs, par exemple:
git fetch --recurse-submodules --jobs=4
selon l'équipe Git, cela peut considérablement accélérer la mise à jour des dépôts qui contiennent de nombreux sous-modules. Lors de l'utilisation de --recurse-submodules sans l'option new --jobs, Git va fetch submodules one par un.
essayez ceci.
git clone -b <branch_name> --recursive <remote> <directory>
Si vous avez ajouté le sous-module dans une branche assurez-vous que vous l'ajouter à la commande clone.