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.