Mémo Git · Sous-modules et LFS

Initialiser et mettre à jour les sous-modules

git submodule update --init

Un sous-module est un dépôt Git rangé dans un dossier d'un autre dépôt, figé sur un commit précis. Après un clone, son dossier est vide : git submodule update --init --recursive le télécharge au commit enregistré par le dépôt parent.

Ce que ça fait

Récupère les dépôts imbriqués au commit enregistré par le dépôt parent.

Un cas d'usage

Tu viens de cloner un projet dont une bibliothèque est fournie en sous-module : son dossier est vide.

En ligne de commande

git submodule update --init --recursive
Initialise et récupère tous les sous-modules, y compris imbriqués.
git submodule add <url> <dossier>
Ajoute un sous-module.
git submodule update --remote
Avance les sous-modules sur le dernier commit de leur branche.
git submodule status
Commit de chaque sous-module.
git config --global submodule.recurse true
Met à jour les sous-modules à chaque pull ou checkout.

Dans Merathon

  1. Section « Sous-modules » du panneau de gauche : le « + » les initialise et les met tous à jour.
  2. Clic droit sur un sous-module pour le mettre à jour seul ou l'ouvrir dans un nouvel onglet.

Questions fréquentes

Pourquoi le dossier du sous-module est-il vide ?

Le clone ne récupère pas les sous-modules par défaut. Lance git submodule update --init --recursive, ou clone avec --recurse-submodules.

Pourquoi un sous-module apparaît-il modifié dans git status ?

Son commit courant n'est plus celui enregistré par le parent. Commite le nouveau commit dans le parent, ou lance git submodule update pour revenir au commit enregistré.

Voir aussi