Comment gérer les sous-modules de git
.
Créer un sous-module
La commande suivante doit se faire à la racine du dépôt :
$ git submodule add [-b <branch>] <url> [path/to/submodule]
<url>
est l’adresse du sous-module (la même que quand on clone) ;path/to/submodule
est optionnel et donne le chemin local où mettresubmodule
. Si on ne le spécifie pas, c’est le nom du dépôt cloné par défaut.-b <branch>
est également optionnel et spécifie le nom de la branche à utiliser dans le sous-module. C’est la branchemaster
par défaut.
Supprimer un sous-module
-
On enlève d’abord le sous-module de
.git/config
avec :$ git submodule deinit path/to/submodule
-
puis on supprime le répertoire du sous-module du répertoire
.git/modules
:$ rm -rf .git/modules/path/to/submodule
-
enfin on supprime répertoire ainsi que l’entrée dans le
.gitmodules
avec :$ git rm path/to/submodule`
Déplacer un sous-module
Si on veut changer la source d’un sous-module, on peut directement éditer le fichier .gitmodules
pour modifier l’URL.
Après, il faut juste faire :
$ git submodule sync
$ git submodule update --init --recursive --remote
Ignorer les modifications dans un sous-module
Quand on utilise un sous-module externe, et qu’on ne souhaite pas le modifier,
on peut être embêté lorsque le .gitignore
n’est pas complet.
En effet, la compilation peut par exemple générer des fichiers
dont on a besoin (on ne peut donc pas faire un clean
),
mais on veut néanmoins voir le sous-module comme étant à jour.
L’astuce est d’ajouter une ligne ignore
dans le .gitmodules
.
Dans mon cas (i.e. l’exemple ci-dessus), j’ai ajouté :
[submodule "sources"]
path = sources
url = ...
ignore = untracked
Les valeurs possibles sont les mêmes que celles de l’option
--ignore-submodules[=<when>]
, c’est-à-dire untracked
, dirty
ou all
.
Voir aussi :
- Git : déménagement d'un dépôt
- Git rebase : pour diviser un commit
- Git : pour extraire de l'information
- Git bisect : pour trouver l'origine d'une régression
- Git tag : pour nommer des versions
- Git archive : exporter du contenu
- Git subtree : créer un nouveau dépôt à partir du répertoire d'un autre dépôt
- Git : au sujet des pull requests
- Git : les branches
- Git : comment corriger des erreurs
- Git diff : voir les différences
- Git clean : grand nettoyage
- Git : aide mémoire de base
- Afficher un pourcentage dans une page HTML
- VNC : Virtual Network Computing
- Git : déménagement d'un dépôt
- Quelques liens au sujet de l'analyse statique
- Ocaml: mon principal langage de développement
- Disque dur externe
- Les profiles dans Firefox
- Cryptographie et mail sous Android
- Quelques liens au sujet du C
- Git rebase : pour diviser un commit