Introduction aux Git Submodules

2026/06/12
Git Débutant Apprentissage

Introduction

Mon environnement de travail personnel se base sur une distro Arch Linux avec un gestionnaire de fenêtre (window manager) qui se nomme i3. J'aborderai sûrement dans un prochain article sur comment je m'amuse au quotidien.

Bref, comme beaucoup de personnes utilisant un gestionnaire de fenêtre ainsi que d'autres petits programmes comme neovim, i3, tmux ou autres, j'utilise un dépôt nommé "dotfiles" pour le fait que les fichiers commencent par un point (ex. : votre dossier .config).

Ce dépôt « dotfiles » ne change pas souvent SAUF quand je bidouille mon dossier neovim. J'aime beaucoup cet éditeur de texte, qui est actuellement mon « IDE ». par défaut sur mes projets personnels.

Pourquoi utiliser un submodule ?

Premièrement, je voulais en apprendre plus sur les fonctionnalités de Git, et les submodules car j'en ai déjà rencontré en milieu professionnel. Tout le monde avançait à tâtons sur les git submodules, sans vraiment prendre le temps de s'y coller.

Cet tutoriel est à destination des débutants et des personnes voulant découvrir les git submodules pour expérimenter.

Initialisation d'un submodule dans un projet

On parle d'initialisation ici dans un projet où aucun submodules est présent. Vous allez dans votre projet où vous voulez placer votre submodule :

git submodule add <adresse-du-dépôt> <choisir-son-chemin>

Normalement, il y aura déjà un fichier .gitmodules et le/les submodules.

Ensuite, on peut effectuer cette commande qui va aller chercher les infos du projet ainsi que vérifier les commit dans le projet principal.

git submodule update --init --recursive

On peut aussi simplifier en faisant ca au clonage du repo principal.

git clone --recurse-submodules <adresse-dépôt-projet-principal>

Si on oublie le --recurse-submodules, on peut faire cette commande :

git submodule update --init  --recursive

Avec le --recursive, on va aller chercher tous les submodules du projet et les mettres à jour avec update.

Mettre à jour un submodule

git submodule update --remote --recursive

Si votre branche par défaut est main/master, la commande va aller chercher le dernier commit de la branch de chaque submodule présent.

Supprimer un submodule

Vous allez à la racine de votre projet :

git rm  && git commit

Mais souvent, ça ne suffit pas, il reste encore des dossiers en cache dans notre dossier .git.

Tout d'abord, on va lancer une vérification de la présence de notre submodule que l'on veut supprimer :

git config --file .gitmodules --get-regexp path
git config --get-regexp submodule
ls -la

Si votre submodule est encore là :

rm -rf .git/modules/<nom-du-submodule

Sources

StackOverflow: How do i remove a submodule

Livre: Pro Git 2nd Edition 2014

Documentation: git submodule