812 votes

Comment résoudre le message "Error : bad index - Fatal : index file corrupt" lors de l'utilisation de Git ?

Après git init J'ai ajouté et validé quelques fichiers, fait quelques changements, ajouté et validé. J'ai configuré le démon git (fonctionnant sous Cygwin sur WinXP) et cloné le dépôt une fois. Maintenant, j'obtiens cette erreur avec le dépôt cloné :

$ git status
error: bad index file sha1 signature
fatal: index file corrupt

Y a-t-il un moyen de résoudre ce problème, à part obtenir une nouvelle copie du référentiel ?

0 votes

Est-ce dans le référentiel cloné, ou dans le référentiel d'origine ? La commande de clonage a-t-elle produit des erreurs ?

17voto

Eighty Points 79

Cela a marché pour moi. Mais je suis curieux de savoir pourquoi j'ai commencé à avoir des erreurs en premier lieu. Quand je me suis déconnecté hier, tout allait bien. En me connectant ce matin, ça ne l'était pas.

rm .git/index

git reset

8voto

jenming Points 379

Remarque à l'intention des utilisateurs du sous-module git : les solutions proposées ici ne fonctionneront pas pour vous en l'état.

Disons que vous avez un référentiel parent appelé dev par exemple, et votre dépôt de sous-modules s'appelle api .

si vous êtes à l'intérieur de api et vous obtenez l'erreur mentionnée dans cette question :

error: bad index file sha1 signature fatal: index file corrupt

En index ne sera PAS à l'intérieur d'un fichier .git dossier. En fait, le .git ne sera même pas un dossier - ce sera un document texte avec l'emplacement des données .git réelles pour ce dépôt. Probablement quelque chose comme ceci :

~/dev/api $ cat .git gitdir: ../.git/modules/api

Donc, au lieu de rm -f .git/index vous devrez le faire :

rm -f ../.git/modules/api/index git reset

ou, plus généralement,

rm -f ../.git/modules/INSERT_YOUR_REPO_NAME_HERE/index git reset

5voto

Nick Kuijpers Points 257

Ce problème peut se produire lorsqu'il y a un .git sous l'un des sous-répertoires. Pour résoudre ce problème, vérifiez s'il y a d'autres répertoires .git, supprimez-les et réessayez.

1voto

Ash Points 1806

Aucune des réponses existantes n'a fonctionné pour moi.

J'utilisais des arbres de travail, donc il n'y a pas de dossier .git.

Vous devez retourner à votre dépôt principal. À l'intérieur de celui-ci, supprimez .git/worktrees/<nom_de_l'arbre>/index.

Ensuite, exécutez git reset comme indiqué dans les autres réponses.

1voto

Moein Qureshi Points 1

Le clonage du dépôt distant et le remplacement du dossier .git dans le répertoire local problématique ont résolu le problème.

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