Git Academy

Avancé · 6 min de lecture

Les sous-modules sans larmes

Inclure un autre dépôt à une version fixe — et les commandes que tout le monde oublie.

Ce qu'est un sous-module

Ton dépôt stocke un pointeur vers un commit précis d'un autre dépôt, et son URL dans .gitmodules. Les fichiers, eux, vivent dans l'autre dépôt.

Sans risque
$ git submodule add https://github.com/OWNER/lib.git vendor/lib
$ git commit -m "chore: add lib as submodule"

Cloner un projet qui en contient

Sans ces options, les dossiers des sous-modules sont vides.

Sans risque
$ git clone --recurse-submodules git@github.com:OWNER/REPO.git
# already cloned:
$ git submodule update --init --recursive

Mettre à jour un sous-module

Avance-le au dernier commit de sa branche, puis commite le nouveau pointeur dans ton dépôt.

Sans risque
$ git submodule update --remote vendor/lib
$ git add vendor/lib
$ git commit -m "chore: update lib"

Les alternatives

Souvent, un gestionnaire de paquets (npm, composer, pip) est plus simple. Les sous-modules brillent pour du code partagé que tu développes aussi.