Par Anonyme (non vérifié) , 29 avril 2026

Ce que sont les submodules

Un submodule est un dépôt Git imbriqué dans un autre. Le repo parent enregistre l'URL du submodule et un SHA spécifique, donc quiconque clone le parent peut récupérer le code exact qui a été testé ensemble. Utilisez les submodules quand vous voulez ancrer une dépendance à un commit fixe tout en préservant son histoire indépendante.

Ajouter un submodule

git submodule add https://github.com/example/lib third_party/lib
git commit -m "Ajouter submodule lib"

Cela crée un fichier .gitmodules qui enregistre le chemin et l'URL.

Cloner un projet avec submodules

git clone --recurse-submodules https://github.com/you/parent
# ou, après un clone simple :
git submodule update --init --recursive

Configurez submodule.recurse = true globalement.

Mettre à jour vers un nouveau commit

cd third_party/lib
git fetch
git checkout v2.0.0
cd ../..
git add third_party/lib
git commit -m "Bump lib to v2.0.0"

Diff et status

git diff --submodule=log
git submodule status
git submodule summary

Foreach

git submodule foreach 'git fetch --all'
git submodule foreach --recursive 'git checkout main && git pull'

Erreurs courantes

Oublier --init au premier clone laisse les répertoires de submodule vides. Éditer dans un submodule et commiter dans le parent sans avoir poussé le submodule d'abord laisse les collaborateurs avec un parent référençant un SHA inatteignable.

Piège du suivi de branche

Les submodules font checkout d'un HEAD détaché au SHA enregistré. Avant de modifier des fichiers, faites git checkout d'une branche dans le submodule.