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

La staging area, démystifiée

L'index (alias cache, staging area) vit dans .git/index comme fichier binaire décrivant ce que contiendra le prochain commit. Ce n'est pas un tree — c'est une liste plate triée d'entrées de chemin avec stat info, mode et SHA. Des opérations comme git add, git rm et git mv mettent à jour l'index ; git commit le transforme en objet tree.

Inspection

git ls-files --stage
git ls-files --debug
git diff --cached
git diff

Versions de l'index

git config index.version 4
git update-index --index-version 4

Stat caching

L'index enregistre device, inode, ctime, mtime, taille pour chaque entrée.

Sparse index

git sparse-checkout init --cone
git sparse-checkout set apps/web libs/shared
git config core.sparseCheckoutCone true
git config index.sparse true

Merge à trois voies dans l'index

git ls-files -u
git checkout-index --stage=2 -- file
git checkout-index --stage=3 -- file

Erreurs courantes

Croire que git add stage les fichiers "définitivement" — il stage un instantané.

Leviers de performance

Les gros index sont lents à lire/écrire. Leviers : index.version=4, core.untrackedCache=true, core.fsmonitor=true, sparse index, et feature.manyFiles=true.