git fsck

Administración

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>...]
[ ] opcional| o<arg> valor a sustituir... repetible--flag opción

Opciones

Haz clic en una opción para desplegarla

Principiante (2)

No cuenta las entradas del reflog como referencias: informa de commits que solo recuerda el reflog.

Cuando haga faltaListar commits que solo mantiene vivos el reflog

Ejemplo

git fsck --no-reflogs

Escribe los objetos colgantes en .git/lost-found (implica --no-reflogs).

Cuando haga faltaReunir los objetos perdidos en un solo lugar

Ejemplo

git fsck --lost-found

Elegir la opción adecuada

Encontrar trabajo perdido

Prueba primero el reflog

ComandoEncuentra
git reflogTodos los sitios por los que pasó HEAD (lo más fácil)
git fsck --no-reflogsCommits que ninguna ref alcanza
git fsck --lost-foundTambién archivos colgantes (p. ej. preparados y luego perdidos)

Ejemplos

Comprobar

git fsck

Silencioso cuando todo va bien.


Encontrar commits perdidos

git fsck --no-reflogs

Commits que ninguna rama ni tag alcanza.


Recogerlos

git fsck --lost-found

Los copia en .git/lost-found.

Ejemplos de flujos de trabajo

1
git fsck --no-reflogs

Encontrar commits colgantes

2
git show <hash>

Comprobarlo

3
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

A:

Un commit al que nada apunta. Se conserva hasta que git gc lo borra (por defecto cuando caduca la entrada del reflog).