Tecnología · GUÍA PRÁCTICA
Git dice “index file corrupt”: demuestra qué índice falló antes de borrarlo
El índice de staging, el de un linked worktree, un índice split/sparse y un .idx de pack son fallos distintos. Conserva el registro staged legible, resuelve la ruta real, reconstruye solo esa clase y verifica objetos y recurrencia.

El índice de staging, el de un linked worktree, un índice split/sparse y un .idx de pack son fallos distintos. Conserva el registro staged legible, resuelve la ruta real, reconstruye solo esa clase y verifica objetos y recurrencia.
El índice del worktree registra entradas staged y es distinto de la base de objetos. .git puede ser un archivo que apunta al gitdir real; .git/index no es universal.
1. Congela la ruta exacta y conserva evidencia staged
Guarda error, directorio, comando y hora. Si el index aún se lee, exporta git diff --cached --binary y git ls-files --stage, y copia el archivo nombrado antes de reset. La versión staged puede diferir del working tree.
No empieces con rm -f .git/index. El error puede señalar otro worktree u objects/pack/*.idx, y borrar elimina evidencia de la intención staged.
2. Resuelve gitdir, worktree e identidad del index
En el mismo shell ejecuta git rev-parse --show-toplevel, --git-dir, --git-common-dir y --git-path index. Un archivo .git puede redirigir y un linked worktree guarda estado privado fuera de la raíz visible.
Registra GIT_DIR, GIT_WORK_TREE y GIT_INDEX_FILE. Si la ruta del error no coincide con el index resuelto, detén la receta genérica y clasifica el archivo nombrado.
3. Distingue worktree, split/sparse y pack index
El index normal es el registro de staging. Split index añade sharedindex.<hash>; sparse checkout usa bits skip-worktree y puede usar sparse index. Conserva la configuración y git sparse-checkout list.
Un .idx bajo objects/pack indexa objetos del pack. Borrar el staging index no lo repara. Protege el par del pack, verifica objetos y usa recuperación del almacén o un clone nuevo.
4. Reconstruye solo la clase demostrada
Si demuestras que el worktree index está corrupto, muévelo en vez de borrarlo y ejecuta git reset --mixed desde el worktree correcto para reconstruirlo desde HEAD. Los archivos quedan, pero se pierde staging; restaura con la evidencia guardada.
Para split/sparse, restaura la configuración sparse-checkout soportada y reapply después de que el index base sea legible. No borres sharedindex ni desactives sparse solo para que status funcione.
5. Verifica objetos, intención staged y recurrencia
Ejecuta git status, git diff, git diff --cached y git fsck --full. Comprueba commits, trees, blobs, archivos nuevos y hunks solo staged.
Repite el status, checkout o CI original en el mismo filesystem, worktree y sandbox. Si reaparece, investiga almacenamiento, terminación abrupta, writers simultáneos, antivirus u overlay.
