git fsck
Verifica el repositorio y encuentra objetos inalcanzables
El comando 'git fsck' (file system check) verifica que cada objeto del repositorio está intacto y que el historial está totalmente conectado. También informa de objetos colgantes (dangling) — commits y archivos a los que ya nada apunta, como un commit abandonado por git reset --hard una vez que el reflog lo olvida. Aún se pueden recuperar hasta que git gc los borre.
Sinopsis
git fsck [--unreachable] [--no-reflogs] [--lost-found] [--full] [<object>...]Opciones
Elegir la opción adecuada
Encontrar trabajo perdido
Prueba primero el reflog
| Comando | Encuentra |
|---|---|
git reflog | Todos los sitios por los que pasó HEAD (lo más fácil) |
git fsck --no-reflogs | Commits que ninguna ref alcanza |
git fsck --lost-found | También archivos colgantes (p. ej. preparados y luego perdidos) |
Ejemplos
Comprobar
git fsckSilencioso cuando todo va bien.
Encontrar commits perdidos
git fsck --no-reflogsCommits que ninguna rama ni tag alcanza.
Recogerlos
git fsck --lost-foundLos copia en .git/lost-found.
Ejemplos de flujos de trabajo
git fsck --no-reflogsEncontrar commits colgantes
git show <hash>Comprobarlo
git branch rescue <hash>Conservarlo
Solución de problemas
error: object file … is empty / corrupt
Causa: Daño del disco o de un cierre inesperado
Trae una copia nueva del remoto; haz antes una copia de .git
Consejos y trampas
Buenas prácticas
- ✓Ejecuta git fsck cuando sospeches corrupción, antes de git gc.
Errores comunes
- ✗Asustarse por los objetos «dangling» — son restos normales que limpia git gc.
Preguntas frecuentes
Un commit al que nada apunta. Se conserva hasta que git gc lo borra (por defecto cuando caduca la entrada del reflog).