2015-03-12 1 views
1

Récemment, j'ai remarqué que quand j'ai été git pull mon repo, il a fait un git gc à chaque fois. J'ai donc essayé de courir git gc manuellement, ce qui m'a donné cette erreur:git gc échec fait référence à un hachage d'objet qui n'est référencé nulle part

fatal: bad object 76cab35e0e21b7cf0bc8416661a67fbfb7f0e4ba 
error: failed to run repack 

J'ai ensuite essayé de chercher .git/packed-refs et .git/objects/ et .git/index pour ce hachage (et même essayé simplement chercher les noms de fichiers et le contenu de tout mon répertoire .git/ pour ce hash), mais n'apparaît jamais. Il n'apparaît pas non plus dans git fsck --full (ce qui probablement fait référence à certains fichiers dans .git/, donc cela a du sens).

Comment résoudre ce problème? (J'utilise git 2.3.2.)

Répondre

2

Cela se produit parce que reflog a des références à des entrées qui ont en quelque sorte disparu du système de fichiers. L'exécution de git gc avec --prune="0 days" supprimera toutes les références plus anciennes que celles qui ne sont pas suivies dans l'origine distante et devrait résoudre le problème.