Par Anonyme (non vérifié) , 29 avril 2026

Diagnostiquer la corruption

Les dépôts se corrompent par perte d'alimentation, panne de disque, sync réseau partiel, ou outils non-Git buggés touchant .git. Les symptômes vont de "fatal: bad object" à du contenu erroné livré silencieusement. Le diagnostic commence par fsck :

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

Échecs courants et corrections

Objet loose corrompu

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

Fichier pack corrompu

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

Reflog corrompu ou manquant

Le reflog est par clone ; ne peut pas être récupéré depuis upstream.

Index corrompu

rm .git/index
git reset

Refs corrompues

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

Récupération depuis un clone

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

Prévention

  • Exécutez git fsck régulièrement.
  • Stockez backups bare : git clone --mirror.
  • Évitez d'éditer dans .git/ à la main.
  • Utilisez RAM ECC et stockage fiable.

Erreurs courantes

Exécuter git gc sur un repo corrompu — l'élagage peut supprimer les seules copies d'objets récupérables.

Protection contre collisions SHA-1

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