Comment diagnostiquer et corriger git fatal: incapable de lire l'arbre

j'utilise git pour gérer des fichiers sur un projet, et continuer à courir dans ce problème.

Quand je lance git status je reçois le message

fatal: unable to read tree e2d920161d41631066945a3cbcd1b043de919570

si je comprends bien, je dois vérifier la sortie de git fsck , et je reçois

broken link from    tree e09a42f248afff64336fbbec2523df97c26451ac
              to    tree e2d920161d41631066945a3cbcd1b043de919570
broken link from    tree e09a42f248afff64336fbbec2523df97c26451ac
              to    tree 9b0dd389bd7f9e8d257395d57e0881b7957f9698
broken link from    tree e09a42f248afff64336fbbec2523df97c26451ac
              to    tree 9e288a4ad60d63f342dfd18237980674426aa725
broken link from    tree e09a42f248afff64336fbbec2523df97c26451ac
              to    tree 2a04647337089f554fab8c49cfd37149e5f4fc9f
broken link from    tree e09a42f248afff64336fbbec2523df97c26451ac
              to    tree ea16658b45ce961adc3c3f519b0e8d9672918ca8

avec beaucoup de messages missing blob .

suite à diverses ressources (E. g Git-Broken Links, Missing & Arbres pendants ) j'ai simplement re-cloné le projet de github et j'ai recommencé.

une fois que j'ai re-cloné le projet, tout est bon pour quelques commit s, et puis le problème se pose à nouveau. Re-clonage de tous les temps ne semble pas être optimale, et semble aller à l'encontre de l'idée d'utiliser des git , et j'aimerais essayer de comprendre ce qui se passe. Comment puis-je diagnostiquer et résoudre ce problème?

33
git
demandé sur Community 2014-01-01 20:54:48

4 réponses

suivant Ma ancienne recommandation , il se résume à être en mesure de trouver un repo qui contient effectivement les éléments manquants (ici plein arbres).

C'est ce qui est montré dans " comment corriger un dépôt git corrompu? ".

mais si un clone complet ne résout pas le problème, alors il peut être:


mise à jour juillet 2016, avec Git 2.10 bientôt sortir, vous avez maintenant:

git fsck --name-objects

Voir " Comment fixer erreur git lien brisé d'arbre en arbre? " pour plus d'.

25
répondu VonC 2017-05-23 12:10:35

je commencerais avec un nouveau clone, puis je lancerais git fsck sur le clone inchangé, intact. Je me demandais (comme ci-dessus) si votre clone initial est corrompu, mais d'une manière qui permet d'effectuer quelques opérations avant d'abandonner les arbres.

6
répondu Mark Leighton Fisher 2014-01-06 02:27:57

C'est peut-être ou peut-être pas le problème soulevé à l'origine ici, mais notez que vous verrez une erreur" fatal: unable to read tree " de la part de git si le compte utilisateur sous lequel la commande git est exécutée n'est plus capable de lire tous les fichiers vérifiés depuis votre dépôt en raison d'un problème de propriété/permissions.

donc dans de nombreux cas la première chose à vérifier devrait être que vous avez la propriété et les permissions définies correctement sur les fichiers dans votre arbre de travail, comme cela peut bien corriger problème. :)

2
répondu Duncan Babbage 2014-06-16 02:01:10

quelque chose qui a juste fonctionné pour moi était de cacher mes changements, faire un coup de pied au cul, et ensuite enlever les changements de la pile de caches. Ma corruption était peut-être superficielle, donc ça ne marchera probablement pas pour tout le monde, mais ça vaut le coup d'essayer.

Voici la sortie que j'ai eu quand j'ai planqué:

work@home ~/code/project $ git stash
fatal: unable to read tree 5fd5f4d0425b42e5b478773fa643dd6fd4918188
fatal: unable to read tree 5fd5f4d0425b42e5b478773fa643dd6fd4918188
Saved working directory and index state WIP on master: d93430c Generic commit msg.
HEAD is now at d93430c An older generic message.

après ça j'ai tiré et puis j'ai sauté et ça s'est nettoyé tout seul. Encore une fois, YMMV.

2
répondu risingfish 2016-08-04 17:41:05