J'essaie de mettre un sous-module dans un dépôt. Le problème est que lorsque je clone le référentiel parent, le dossier du sous-module est entièrement vide.
Existe-t-il un moyen de faire en sorte que les git clone parent_repo
données soient effectivement placées dans le dossier du sous-module?
Par exemple, http://github.com/cwolves/sequelize/tree/master/lib/ , nodejs-mysql-native
pointe du doigt un sous - module git externe, mais quand j'extraira le sequelize
projet, ce dossier est vide.
git
git-submodules
marque
la source
la source
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 .Réponses:
Avec la version 2.13 de Git et versions ultérieures,
--recurse-submodules
peut être utilisé à la place de--recursive
:Note de l'éditeur:
-j8
est une optimisation des performances facultative qui est devenue disponible dans la version 2.8 et récupère jusqu'à 8 sous-modules à la fois en parallèle - voirman git-clone
.Avec la version 1.9 de Git jusqu'à la version 2.12 (
-j
indicateur uniquement disponible dans la version 2.8+):Avec la version 1.6.5 de Git et versions ultérieures, vous pouvez utiliser:
Pour les référentiels déjà clonés ou les anciennes versions de Git, utilisez:
la source
master
?Vous devez faire deux choses avant qu'un sous-module soit rempli:
la source
git-submodule(1)
page de manuel ( kernel.org/pub/software/scm/git/docs/git-submodule.html ). Vous découvrirez quegit submodule update
prend en charge un joli paramètre appelé--recursive
.git submodule update --init
(Voir aussi ma réponse ).Git 2.23 (Q3 2019): si vous souhaitez cloner et mettre à jour les sous-modules vers leur dernière révision:
Si vous voulez simplement les cloner sur leur SHA1 enregistré:
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).Voir Utilisation récursive des sous-modules git pour la partie init.
Voir
git submodule
expliqué pour plus.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:
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)Cela signifie:
la source
git submodule update --init --recursive --remote
vous devez les mettre à jour avec la dernière validation de leur branche respective. (ex: stackoverflow.com/a/56981834/6309 )clone --recurse-submodules --remote-submodules
nisubmodule update --init --recursive --remote
) ne me permet réellement de récupérer les sous-dépôts. Tout ce que j'obtiens est un fichier .gitmodules, et je n'ai pas pu trouver d'autre moyen de lancer les sous-dépôts que de les cloner manuellement un par un. Je voudrais au moins avoir un script pour le faire avecsubmodule foreach
...[Réponse rapide]
Vous pouvez utiliser cette commande pour cloner votre référentiel avec tous les sous-modules:
Ou si vous avez déjà cloné le projet, vous pouvez utiliser:
la source
Si votre sous-module a été ajouté dans une branche, assurez-vous de l'inclure dans votre commande de clonage ...
la source
Essaye ça:
Il extrait automatiquement les données du sous-module en supposant que vous avez déjà ajouté les sous-modules au projet parent.
la source
--recurse-submodules
et--recursive
sont des alias équivalents .git submodule update --init --recursive
comme expliqué dans cette réponseJe pense que vous pouvez suivre 3 étapes:
la source
réponse tardive
Comme je viens de passer une heure à tripoter avec un ami: même si vous avez des droits d'administrateur sur BitBucket, clonez toujours le référentiel ORIGINAL et utilisez le mot de passe de celui qui possède le dépôt. Ennuyeux de découvrir que vous avez rencontré ce minetrap: P
la source
Essayez ceci pour inclure des sous-modules dans le référentiel git.
ou
la source
Vous pouvez utiliser l'
--recursive
indicateur lors du clonage d'un référentiel. Ce paramètre force git à cloner tous les sous-modules définis dans le référentiel.Après le clonage, les branches des sous-modules peuvent parfois être modifiées, exécutez donc cette commande après:
la source
[Réponse rapide]
Après avoir cloné le référentiel parent (qui contenait un référentiel de sous-module), procédez comme suit:
la source
La recherche parallèle de sous-modules vise à réduire le temps nécessaire pour récupérer un référentiel et tous ses sous-modules associés en permettant la récupération de plusieurs référentiels à la fois. Cela peut être accompli en utilisant la nouvelle option --jobs, par exemple:
Selon l'équipe de Git, cela peut considérablement accélérer la mise à jour des référentiels contenant de nombreux sous-modules. Lorsque vous utilisez --recurse-submodules sans la nouvelle option --jobs, Git récupère les sous-modules un par un.
Source: http://www.infoq.com/news/2016/03/git28-released
la source
J'ai eu le même problème pour un référentiel GitHub. Mon compte n'avait pas de clé SSH. Le processus est
Ensuite, vous pouvez cloner le référentiel avec des sous-modules (
git clone --recursive YOUR-GIT-REPO-URL
)ou
Exécutez
git submodule init
etgit submodule update
pour récupérer des sous-modules dans un référentiel déjà cloné.la source
Permission denied (publickey). fatal: Could not read from remote repository.
erreurEssaye ça.
Si vous avez ajouté le sous-module dans une branche, assurez-vous de l'ajouter à la commande clone.
la source
S'il s'agit d'un nouveau projet, vous pouvez simplement faire comme ceci:
S'il est déjà installé, alors:
la source