53 votes

Comment faire face à cette git d'erreur

J'obtiens cette erreur dans mon dépôt git:

22:09:15 $ git status
# On branch master
error: Could not read 8124cc15c63be92d534e4cdfa33c38d54deee122
error: unable to read tree object HEAD
nothing to commit (working directory clean)

Une recherche Google pour error: unable to read tree object HEAD n'entraîne pas de beaucoup d'aide, cette erreur semble être très rare. Je ne suis pas sûr de la façon de traiter avec elle. Pourrait-il être une panne de disque dur?

Edit: La sortie de l' git fsck est le suivant:

broken link from  commit 607328dc80e4901a55b95c683d4fbf43e6df28bf
              to    tree 8124cc15c63be92d534e4cdfa33c38d54deee122
missing tree 8124cc15c63be92d534e4cdfa33c38d54deee122
dangling tree 56b5d4a5e429d251582ec927bca7ef1225510c41
dangling tree 0259d2d38b18b6136bb6070fb41faf3624453cc6

29voto

VonC Points 414372

Sur un "lien brisé" message, vous pouvez suivre l' GitFaq recommandations:

  • sauvegardez tout votre état, de sorte que tout ce que vous faire est de re-faisable si vous corrompre les choses plus!
  • exploser corrompu d'un pack de fichiers
    • Voir "man git-unpack-objects", et en particulier le "-r" pavillon.
      Aussi, s'il vous plaît comprendre qu'il ne déballe les objets qui ne sont pas déjà disponibles, de sorte que vous devez déplacer le pack de fichier à partir de son emplacement normal des premières (sinon, git-unpack-objects trouverez tous les objets qui sont dans le pack de fichier dans le pack de fichier lui-même, et de ne pas déballer quoi que ce soit)
  • remplacer tout cassé et/ou objets manquants
    • C'est la partie difficile.
      Parfois (espérons-le souvent!) vous pouvez trouver les objets manquants dans les autres copies des dépôts.
      À d'autres moments, vous devrez peut-être essayer de trouver les données d'une autre manière (par exemple, peut-être que votre copie contient le contenu du fichier que lorsque haché sera l'objet manquant?).
  • assurez-vous que tout est heureux avec "git fsck --full"
  • repack tout pour revenir à l'efficacité de l'état nouveau

Notes:

20voto

Tilman Vogel Points 2379

J'ai eu un problème similaire, juste maintenant. La corruption se pose quand mon portable a fait un hard power-off lors d'un git pull. J'ai une sauvegarde à distance référentiel. J'ai d'abord eu plusieurs fichiers objets dans .git/objects/??/* qui ont été la taille zéro. Après un cp -a sauvegarde du référentiel, j'ai fait ça:

  • supprimer le zéro de la longueur des objets
  • cloner le dépôt distant en ../fresh/ référentiel
  • dans le cassé référentiel, je n'ai

    cat ../fresh/.git/objects/pack/pack-*.pack | git unpack-objects

Ce rempli les objets manquants dans la base de données d'objets. Le référentiel semble être de retour maintenant.

6voto

Honza Pokorny Points 1272

J'ai eu le même problème. Après beaucoup de tirage de cheveux, j'ai découvert que c'était en cause par la modification de l'autorisation pour le dépôt git du fichiers. J'ai résolu comme suit:

$ cd .git
$ chmod 755 *

Fait!

0voto

Matt Brite Points 41

Si vous n'avez pas uncommited changements de la solution la plus simple est de supprimer la branche locale: git branch-D [nom de la branche]

et alors commander à nouveau la branche distante: git checkout -b [nom de la branche] l'origine/la[nom de la branche]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X