0Pricing
Git Advanced: Monorepo, Submodules & Workflows · Leçon

Figer des sous-modules sur des balises et des commits précis

Maîtrisez le contrôle précis du commit ou de la balise vers lequel pointe un sous-module, afin de garantir des compilations reproductibles et des mises à jour de dépendances réfléchies et faciles à vérifier dans les flux de travail avancés.

Figer des sous-modules sur des balises et des commits précis est une leçon Git Advanced: Monorepo, Submodules & Workflows gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Git Advanced: Monorepo, Submodules & Workflows, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Git Advanced: Monorepo, Submodules & Workflows comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

Submodules Pin Commits, Not Branches

A common misconception: a submodule tracks a branch. In reality, the superproject records a specific commit SHA for each submodule. Branches only matter when you choose to update.

This pinning is what makes submodule-based builds reproducible across machines and time.

Inspecting the Pinned Commit

See exactly which commit each submodule is locked to with git submodule status. The leading SHA is the recorded pin.

git submodule status
# +a1b2c3d libs/engine (v2.3.0-4-ga1b2c3d)

Reading the Status Prefix

  • (space) — submodule is at the pinned commit
  • + — checked-out commit differs from the pin
  • - — submodule is not initialized
  • U — merge conflicts in the submodule

Pinning to a Specific Tag

To pin to a released tag, enter the submodule, check out the tag, then commit the new pointer in the superproject.

cd libs/engine
git fetch --tags
git checkout v2.4.0
cd ../..
git add libs/engine
git commit -m 'Pin engine to v2.4.0'

Pinning to an Exact SHA

Sometimes you need a commit between releases. Check out the exact SHA inside the submodule, then record it in the superproject.

cd libs/engine
git checkout 9f8e7d6
cd ../..
git add libs/engine
git commit -m 'Pin engine to 9f8e7d6 hotfix'

Detached HEAD Is Normal Here

Checking out a tag or SHA puts the submodule in detached HEAD. That is expected and correct for pinning. You only attach to a branch when you intend to develop inside the submodule.

Optional Branch Tracking

You can record a preferred branch in .gitmodules so git submodule update --remote knows what to follow. The pin still wins until you explicitly update.

[submodule "libs/engine"]
  path = libs/engine
  url = https://example.com/engine.git
  branch = stable

Controlled Updates with --remote

To advance a submodule to the latest of its tracked branch, use --remote. Review the diff before committing the new pin so the bump is deliberate.

git submodule update --remote libs/engine
git diff --submodule
git add libs/engine && git commit -m 'Bump engine'

Enforcing Pins in CI

Builds should fail if a submodule drifts from its pin. A CI guard checks that the checked-out SHA matches the recorded one.

git submodule status | grep '^+' && echo 'Submodule drift!' && exit 1

Why Deliberate Pinning Matters

Accidental submodule bumps are a frequent source of mysterious build breaks. Treating each pin change as a reviewable, intentional commit keeps your dependency surface predictable and auditable.

Reverting a Bad Pin

If a pin update breaks the build, revert it like any other change: the superproject commit that moved the pointer can be undone, snapping the submodule back to its previous SHA.

git revert <pin-bump-commit>
git submodule update --init libs/engine

Quick Check

Test your understanding of submodule pinning.

Recap

You learned that submodules pin commit SHAs, how to read git submodule status prefixes, how to pin to a tag or exact SHA, why detached HEAD is normal, optional branch tracking, controlled --remote updates, and CI drift enforcement. Deliberate pinning keeps advanced submodule setups reproducible.

Questions Fréquemment Posées

La leçon « Figer des sous-modules sur des balises et des commits précis » est-elle gratuite ?

Oui — le texte complet de « Figer des sous-modules sur des balises et des commits précis » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Git Advanced: Monorepo, Submodules & Workflows, passe à CoddyKit PRO. Le cours Git Advanced: Monorepo, Submodules & Workflows comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Figer des sous-modules sur des balises et des commits précis » ?

Maîtrisez le contrôle précis du commit ou de la balise vers lequel pointe un sous-module, afin de garantir des compilations reproductibles et des mises à jour de dépendances réfléchies et faciles à v… Tu pratiques Git Advanced: Monorepo, Submodules & Workflows avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Git Advanced: Monorepo, Submodules & Workflows ?

Aucune expérience préalable n'est requise. Git Advanced: Monorepo, Submodules & Workflows sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Figer des sous-modules sur des balises et des commits précis » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Git Advanced: Monorepo, Submodules & Workflows ?

Oui. Chaque leçon Git Advanced: Monorepo, Submodules & Workflows inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Utilisation des branches de sous-modules
  2. Sous-modules imbriqués et configurations complexes
  3. Problèmes courants des sous-modules et correctifs
  4. Figer des sous-modules sur des balises et des commits précis
← Retour à Git Advanced: Monorepo, Submodules & Workflows