Dossier de sous-module Git vide lors du clonage du dépôt

130

J'ai un dépôt hébergé sur https://github.com/aikiframework/json . Sur ma copie locale, j'ai ajouté un sous-module à l'aide de la commande

git submodule add [email protected]:jcubic/json-rpc.git json-rpc

Ensuite, j'ai fait un commit et un push, et les changements apparaissent sur GitHub (je peux cliquer dessus). Mais quand je clone le repo

git clone https://github.com/aikiframework/json.git

le dossier du sous-module json-rpc est vide.

Qu'est-ce que j'oublie ici? Ai-je oublié quelque chose? Pourquoi ce dossier est-il vide?

jcubic
la source

Réponses:

200

OK je l'ai trouvé, nécessaire à ajouter --recursivelors du clonage du repo.

Ainsi, la commande clone se termine par:

git clone https://github.com/aikiframework/json.git --recursive
jcubic
la source
229
Oui. Vous pouvez également récupérer des sous-modules après coup avec git submodule update --init, si vous avez déjà cloné mais que vous avez oublié --recursive.
Amber
4
Juste face au problème qu'il y a un sous-module sur la branche de développement, mais pas encore sur la branche maître. Lorsque vous clonez le dépôt git en utilisant --recursive, il ne trouvera pas le sous-module sur la branche master, et vous devez le récupérer en utilisant le commentaire Ambers "git submodule update --init" pour obtenir également le sous-module.
d4Rk le
11
Si vous utilisez , git submodule update --initvous devrez aller à chaque repo et faire git checkout mastersinon vous obtiendrez une erreur You are not currently on a branch.sur git pulllorsque vous essayez de le mettre à jour vers une version plus récente.
Noitidart
@Noitidart y a-t-il un moyen qui ne fasse pas ça? (après avoir cloné le projet déjà)
borgr
1
@Noitidart Merci pour l' update --initindice. Cela aide lorsque le clone d'origine ne contient pas --recursiveet souhaite simplement extraire les sous-modules manquants.
Jari Turkia