103 votes

Git commit a cessé de fonctionner - Erreur lors de la construction des arbres

Je ne peux pas commettre un changement:

$ git commit
erreur: objet invalide 100644 13da9eeff5a9150cf2135aaed4d2e337f97b8114 pour 'spec/routing/splits_routing_spec.rb'
erreur: Erreur de construction des arbres

Jusqu'à présent, j'ai essayé :

$ git fsck | grep 13da
blob manquant 13da9eeff5a9150cf2135aaed4d2e337f97b8114

et aussi :

$ git prune
error: Impossible de lire 1394dce6fd1ad15a70b2f2623509082007dc5b6c
fatal: objet d'arbre invalide 1394dce6fd1ad15a70b2f2623509082007dc5b6c

et aussi :

$ git fsck | grep 13da
blob manquant 13da9eeff5a9150cf2135aaed4d2e337f97b8114

mais rien n'a aidé. Devrais-je supprimer le fichier, committer et le réintroduire ensuite? Je suis prêt à perdre un peu d'historique si cela ramène le git commit.

7voto

latvian Points 828

Pour moi, c'était simplement un problème de permissions. Quand j'ai exécuté avec sudo, cela a fonctionné. Peut-être lié à l'environnement Mac.

0 votes

sudo est un peu trop permissif, mais c'était effectivement un problème de permission. Je l'ai corrigé en restaurant la propriété de tout le dossier à l'utilisateur approprié.

7voto

Sathibabu P Points 250

Dans mon cas, j'ai résolu le problème en :

git reset --mixed

0 votes

Erreur : impossible de lire le fichier sha1 de test.ts (52e55168ebc6e4073b5935bced17f1cde7c50fad) fatal : Impossible de réinitialiser le fichier d'index à la révision 'HEAD'.

3voto

YiDing Points 31

Cela peut être causé par une application de synchronisation tierce telle que Dropbox et Jianguoyun. Il existe peut-être deux façons basées sur mon expérience :

  1. Vous pouvez essayer d'annuler les opérations de synchronisation récentes.
  2. Supprimez les fichiers concernés du dossier, validez, puis replacez les fichiers.

0 votes

Comment puis-je savoir quels fichiers sont liés? git gc ne me donne pas plus d'informations.

0 votes

J'ai Dropbox et cela a perturbé certains fichiers internes .git quelque part, mais je ne sais pas quand et ce n'était pas lié à un fichier déjà commité, mais à mes changements non commités. J'ai juste dû modifier un peu mon texte/code, de sorte que le hachage soit différent et que l'erreur ne se déclenche plus.

2voto

Abd Rmdn Points 73

Solution de contournement facile, si vous n'êtes pas vraiment préoccupé par le suivi du fichier, vous pouvez dupliquer le fichier et supprimer l'original, commiter d'abord la suppression et l'ajout, puis renommer à nouveau l'original.

Git devrait se reconstruire normalement

1 votes

A fonctionné pour moi - merci abd, vidé le dossier, commité, puis remplacé les fichiers et commité.

0voto

Yang-Hsing Lin Points 26

Dans mon cas, c'est le fichier de la branche à distance qui est corrompu. Je l'ai résolu en :

  1. supprimant complètement les branches à distance avec $ git remote rm origin
  2. ajoutant à nouveau la branche à distance : $ git remote add origin
  3. récupérant à nouveau la branche à distance : $ git fetch origin
  4. réinitialisant en dur à la branche désirée sur l'origine (par exemple, develop) : $ git reset --hard origin/develop

Ensuite, tout revient à la normale.

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