Comment “git clone”, y compris les submodules?
Je suis en train de mettre un sous-module dans une prise en pension. Le problème est que lorsque je clone le parent pensions de titres, les sous-module dossier est entièrement vide.
Est-il possible de faire en sorte que git clone parent_repo
se met les données dans le sous-module dossier?
Par exemple, http://github.com/cwolves/sequelize/tree/master/lib/, nodejs-mysql-native
est pointant sur un externe git sous-module, mais quand je l'extraction de la sequelize
projet, ce dossier est vide.
- Cette commande serait
git clone --recurse-submodules --remote-submodules
(T3 2019 Git 2.23): il permet de cloner et de mettre à jour les submodules en une seule commande. Voir mon édité réponse ci-dessous.
Vous devez vous connecter pour publier un commentaire.
Avec la version 2.13 de Git et, plus tard,
--recurse-submodules
peut être utilisé à la place de--recursive
:note de l'Éditeur:
-j8
est une option d'optimisation de la performance devenues disponibles dans la version 2.8, et atteint jusqu'à 8 submodules à un moment en parallèle — voirman git-clone
.Avec la version 1.9 de Git jusqu'à la version 2.12 (
-j
drapeau uniquement disponible dans la version 2.8+):Avec la version 1.6.5 de Git et plus tard, vous pouvez utiliser:
Déjà cloné repos, ou les anciennes versions Git, utilisation:
~/.gitconfig
en vertu de la[alias]
section:cloner = clone --recursive
.gitconfig
paramètres sont globaux, et pas seulement pour un seul référentiel.git submodule foreach git checkout master
master
?master
avec votre choix de nom de la branche autres quemaster
.git submodule update --depth 10 --recursive --init
peu profondes le repogit submodule update --init --recursive
avant d'exécutersh -c 'cd cmd/ios7crypt && go install'
git submodule update --init --recursive
mais tous les submodules sont en dechated chef de l'etat, je dois aller dans chaque sous-module et checkout master. Quelqu'un sait pourquoi?git clone --recursive -j8 [email protected]:repoToClone
ne fonctionne pas. Il me diterror: unknown switch
j' ` Si je supprime le-j8
cela fonctionne sans problème--recurse-submodules
--recursive
et--recurse-submodules
options se comportent de façon identique. Ils la suite d'un appel à la même fonction.Que vous avez à faire deux choses avant d'un sous-module seront remplies:
git-submodule(1)
page de man (kernel.org/pub/software/scm/git/docs/git-submodule.html). Vous verrez quegit submodule update
prend en charge une belle paramètre appelé--recursive
.git submodule update --init
(Voir aussi ma réponse).git submodule update --init
doit être élargi pourgit submodule init; git submodule update
dans 1.5.5.6.git pull
il dit que sa tête est détachée et je ne peux pas fairegit pull
dans à la mise à jour, aucun moyen de résoudre ce problème?Git 2.23 (T3 2019): si vous voulez cloner et mettre à jour les submodules à leur dernière révision:
Si vous voulez juste clone à leur enregistré SHA1:
Voir ci-dessous.
Original de la réplique 2010
Comme joschi mentionne dans les commentaires,
git sous-module
prend désormais en charge la--recursive
option (Git1.6.5 et plus).Voir Travailler avec des submodules de manière récursive pour le init.
Voir
git sous-module
expliqué pour plus d'.Mise à jour en 2016, avec git 2.8: voir "Comment faire pour accélérer /paralléliser les téléchargements de submodules à l'aide de
git clone --recursive
?"Vous pouvez lancer l'extraction de la sous-module en utilisant plusieurs threads en parallèle.
Pour les instances:
Encore mieux, avec Git 2.23 (T3 2019), vous pouvez le copier et extraire les sous-module de suivi de branche en une seule commande!
Voir s'engager 4c69101 (19 Mai 2019) par Ben Avison (`).
(Fusionnés par Junio C Hamano --
gitster
-- dans s'engager 9476094, 17 Juin 2019)Qui signifie:
git submodule update --init --recursive --remote
devrait les mettre à jour à la dernière validation de leur direction respective. (ex: stackoverflow.com/a/56981834/6309)clone --recurse-submodules --remote-submodules
nisubmodule update --init --recursive --remote
) permettez-moi de réellement chercher la subrepos. Tout ce que j'obtiens est un .gitmodules fichier, et je ne pouvais pas trouver n'importe quel moyen pour initialiser le subrepos autres que manuellement le clonage un par un. J'aimerais au moins avoir un script pour le faire avecsubmodule foreach
...git submodule add cpputils https://github.com/VioletGiraffe/cpputils.git
etgit submodule add cpp-template-utils https://github.com/VioletGiraffe/cpp-template-utils
. Ajouter, commit et push. Vous verrez alors votre submodules, et peut clone qui référentiel avec, a déclaré submodules.Vous pouvez utiliser cette commande pour cloner votre dépôt avec tous les submodules:
Ou si vous avez déjà cloné le projet, vous pouvez utiliser:
Si votre sous-module a été ajouté dans une branche assurez-vous d'inclure dans votre commande clone...
Essayez ceci:
Il extrait automatiquement dans le sous-module de données en supposant que vous avez déjà ajouté les submodules pour le projet parent.
--recurse-submodules
et--recursive
sont équivalent alias.git submodule update --init --recursive
comme expliqué dans cette réponseJe pense que vous pouvez aller avec 3 étapes:
réponse tardive
Que je viens de passer une heure ensemble de bidouiller avec un ami: Même si vous avez les droits d'Admin sur BitBucket, toujours cloner le dépôt ORIGINAL et utilisez le mot de passe de celui qui détient le repo. Gênant de savoir que vous avez couru dans ce minetrap 😛
Essayer ce, y compris pour les submodules dans le dépôt git.
ou
Vous pouvez utiliser le
--recursive
drapeau lors du clonage d'un référentiel. Ce paramètre force git clone tous les submodules dans le référentiel.Après le clonage, parfois submodules branches peuvent être modifiées, afin d'exécuter cette commande après:
[Réponse Rapide]
Après le clonage de la mère repo (qui contient des sous-module repo), effectuez les opérations suivantes:
Submodules parallèle chercher vise à réduire le temps nécessaire pour récupérer une référentiels et de tous ses submodules en permettant la récupération de plusieurs référentiels à la fois. Ceci peut être accompli en utilisant le nouveau --les travaux de l'option, par exemple:
Selon Git de l'équipe, cela peut considérablement accélérer la mise à jour des référentiels qui contiennent de nombreux submodules. Lors de l'utilisation de --recurse-submodules sans la nouvelle --les travaux de l'option, Git va chercher submodules un par un.
Source: http://www.infoq.com/news/2016/03/git28-released
J'ai eu le même problème pour un dépôt GitHub. Mon compte était en manque de Clés SSH. Le processus est
Ensuite, vous pouvez cloner le dépôt avec submodules (
git clone --recursive YOUR-GIT-REPO-URL
)ou
Exécuter
git submodule init
etgit submodule update
chercher submodules déjà cloné référentiel.De l'essayer.
Si vous avez ajouté le sous-module dans une branche assurez-vous que vous l'ajouter à la commande clone.
Si c'est un nouveau projet, vous pouvez faire comme ceci :
Si il est déjà installé que :