N’utilisant Git que depuis quelques mois, je n’en connais pas encore tous les aspects, loin de là !
Aujourd’hui j’ai eu un besoin très simple, intégrer à mon dépôt Git un autre dépôt Git. En gros, l’équivalent d’un bon vieux svn:externals. Je n’ai pas trouvé immédiatement comment faire donc je partage ici la commande magique :
git submodule
L’utilisation est donc très simple. Au lieu de faire un git clone
dans un sous-dossier de son projet, il suffit de faire à la racine du dépôt :
git submodule add repo_url ./your_folder/
Un nouveau dossier caché est créé. Il vous suffit donc de le versionner dans votre propre dépôt pour que la référence soit prise en compte.
Si vous clonez votre dépôt depuis un nouvel emplacement, il vous faut utiliser la commande git submodule init
pour récupérer les dépôts externes référencés.
Et ensuite, un git submodule update
pour mettre à jour régulièrement les sous-projets.
Aussi simple que ça !
Plus d’infos sur cette commande à l’adresse suivante : http://www.kernel.org/pub/software/scm/git/docs/git-submodule.html
Bonjour,
Merci pour le post, très utile. Juste une question: J’ai un souci quand je fais les git update…
Disons que je modifie le submodule et je commit (dans une répertoire isolé). Après je vais dans le répertoire du projet qui contient le submodule et je fais le git submodule update, mais je vois rien passer (meme quand je suis sur le folder du submodule).
Je suis obligé d’aller dans le repertoire du submodule et faire un git pull. Est-ce que normal?
Merci