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.

0voto

Jughead Points 319

Dans mon cas, cela était dû à une version différente de git. J'avais utilisé mon dépôt via le port Windows officiel de git et avais commencé à utiliser le port MinGW avec le même numéro de version.

J'ai commencé à rencontrer ce problème en essayant de valider avec git MinGW. Revenir à Windows Git a résolu le problème.

0voto

C'est aussi simple que de cloner à partir du dépôt distant dans un nouveau dossier, supprimer tous les fichiers de ce nouveau dossier en conservant celui .git. Puis copier tous les fichiers de l'ancien dossier dans le nouveau dossier cloné sans copier le dossier .git.

0voto

Marcelo Cesar Points 49

Eh bien, j'ai également rencontré ce problème, voici ce que j'ai fait : copier le dossier ou les fichiers modifiés dans un autre projet dans VSCode, supprimer ce dépôt et le cloner à nouveau, puis réintégrer ce(s) fichier(s) ou dossier(s). Cela semble être une méthode longue, mais je pense qu'il est préférable de s'assurer que vous ne perdrez pas vos fichiers non encore soumis à validation.

0voto

Uzair Points 11

La manière la plus simple de résoudre ce problème est :

  1. Copiez les fichiers non commités.
  2. Ensuite, utilisez $ git reflog -1
  3. Utilisez $ git reset --hard xxxxxx (xxxxx étant la tête de votre dernier commit)
  4. Ensuite, collez à nouveau vos fichiers.

Cela a fonctionné pour moi. Pas besoin de cloner le dépôt ou de supprimer le distant.

0voto

Avi Parshan Points 737
git status 

et ensuite il vous montre quels fichiers ont été modifiés/causant le problème... puis vous pouvez soit les ajouter via git add "nom du fichier" - sans les guillemets ou les supprimer via git rm "nom du fichier"

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