Por Anónimo (no verificado) , 29 Abril 2026

El área de staging, desmitificada

El índice (alias cache, área de staging) vive en .git/index como archivo binario que describe lo que contendrá el próximo commit. No es un tree — es una lista plana ordenada de entradas de ruta con stat info, modo y SHA. Operaciones como git add, git rm y git mv actualizan el índice; git commit lo convierte en un objeto tree.

Inspección

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

Versiones del índice

Git soporta varias versiones. La 2 fue histórica; la 3 añadió skip-worktree (para sparse checkout); la 4 (predeterminada en 2.20+) comprime prefijos de rutas para árboles grandes.

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

Caching de stat

El índice registra dispositivo, inode, ctime, mtime, tamaño para cada entrada. git status usa esto para saltar archivos cuyo stat coincide.

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 de tres vías en el índice

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

Errores comunes

Creer que git add stagea archivos "permanentemente" — stagea una instantánea. Re-edita y re-añade.

Palancas de rendimiento

Índices grandes son lentos de leer/escribir. Palancas: index.version=4, core.untrackedCache=true, core.fsmonitor=true, sparse index, y feature.manyFiles=true.