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

Diagnosticar corrupción

Los repositorios se corrompen por pérdida de energía, fallo de disco, sync de red parcial, o herramientas no-Git con bugs tocando .git. Los síntomas van de "fatal: bad object" a contenido erróneo entregado silenciosamente. El diagnóstico empieza con fsck:

git fsck --full
git fsck --full --strict --no-dangling
git fsck --connectivity-only
git fsck --lost-found

Fallos comunes y arreglos

Objeto suelto corrupto

# en clone sano:
git cat-file -p <sha> > /tmp/recovered
# en clone corrupto:
cd .git/objects/<xx>
mv <rest-of-sha> <rest-of-sha>.bad
git hash-object -w /tmp/recovered

Archivo pack corrupto

for p in .git/objects/pack/pack-*.pack; do
  git verify-pack -v "$p" >/dev/null 2>&1 || echo "MALO: $p"
done
rm .git/objects/pack/pack-<sha>.{pack,idx,bitmap,rev}
git fetch --all
git repack -ad

Reflog corrupto o faltante

El reflog es por clone; no se puede recuperar desde upstream.

Índice corrupto

rm .git/index
git reset

Refs corruptas

git pack-refs --all
cat .git/packed-refs
git update-ref refs/heads/main <sha>

Recuperación de repo desde un clone

git clone https://example.com/repo.git fresh
cd corrupt
git push ../fresh 'refs/heads/local-only:refs/heads/local-only'

Prevención

  • Ejecuta git fsck regularmente.
  • Almacena backups bare: git clone --mirror.
  • Evita editar dentro de .git/ a mano.
  • Usa RAM ECC y almacenamiento confiable.

Errores comunes

Ejecutar git gc en un repo corrupto — la poda puede borrar las únicas copias de objetos recuperables.

Protección contra colisiones SHA-1

git --version
echo "test" | git hash-object --stdin