Après git init
, j'ai ajouté et validé quelques fichiers, apporté des modifications, ajouté et validé. Configurez le démon git (exécuté sous Cygwin sur WinXP) et clonez le référentiel une fois. Maintenant, j'obtiens cette erreur avec le référentiel 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?
git
corruption
Numéro8
la source
la source
Réponses:
Si le problème est lié à l'index comme zone de transit pour les validations (c'est-à-dire
.git/index
), vous pouvez simplement supprimer l'index (faire une copie de sauvegarde si vous le souhaitez), puis restaurer l'index dans la version lors de la dernière validation:Sous OSX / Linux:
Sous Windows:
(La
reset
commande ci-dessus est la même quegit reset --mixed HEAD
)Vous pouvez également utiliser la plomberie de niveau inférieur au
git read-tree
lieu degit reset
.Si le problème est lié à l' index du packfile , vous pouvez le récupérer à l'aide de
git index-pack
.la source
:w!
dans un:Gstatus
(de fugitive.vim). Cette réponse m'a évité de tirer beaucoup de cheveux.erase /s .git\index
, j'en avais besoinerase .git\index.lock
aussi.git reset --keep
place? Dans la feuille de triche Tower Git, il est expliqué commegit reset --keep
c'est une forme plus sûre degit reset --hard
;git reset --mixed
ne touche pas du tout à workdir.Vous avez peut-être accidentellement corrompu le fichier .git / index avec un sed à la racine de votre projet (refactoring peut-être?) Avec quelque chose comme:
pour éviter cela à l'avenir, ignorez simplement les fichiers binaires avec votre grep / sed:
la source
.git/index
, vous pouvez toujours le supprimer et recréer avecgit reset
(sans--hard
!).sed
avec quelque chose commefind .git/ -type f -exec sed -i 's/Legislator/Politician/g' {} \;
cela pourrait aider si votre.git/
est si corrompu quegit reset
cela ne fonctionnera pas. Ou peut-être souhaitez-vous restaurer votre existant.git/index
sans le supprimer. Cela échouera, bien sûr, si votre code ou index d'origine contenait déjà des «législateurs».sed
en remplaçant monnew_string
par monold_string
!J'ai eu ce problème, et j'essaie de résoudre ce problème:
Mais cela n'a pas fonctionné. La solution ? Pour une raison quelconque, j'avais d'autres dossiers .git dans des sous-répertoires. Je supprime ces dossiers .git (pas le principal) et
git reset
encore. Une fois supprimés, tout fonctionnait à nouveau.la source
Cela ressemble à un mauvais clone. Vous pouvez essayer ce qui suit pour obtenir (éventuellement?) Plus d'informations:
la source
Étant donné que les solutions ci-dessus m'ont laissé des problèmes continus, j'ai utilisé cette solution terne:
A fait l'affaire. Btw, j'ai fait un
sed
sur la racine du projet comme l'a deviné @hobs. J'ai appris ma leçon.la source
Cela a fonctionné pour moi. Bien que je sois curieux de savoir pourquoi j'ai commencé à obtenir les erreurs en premier lieu. Hier, quand je me suis déconnecté, ça allait. Connectez-vous ce matin, ce n'était pas le cas.
la source
Remarque pour les utilisateurs de sous-modules git - les solutions ici ne fonctionneront pas pour vous en l'état.
Supposons que vous ayez un référentiel parent appelé
dev
, par exemple, et que votre référentiel de sous-module soit appelé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
Le
index
fichier ne sera PAS dans un.git
dossier. En fait, le.git
ne sera même pas un dossier - ce sera un document texte avec l'emplacement des vraies données .git pour ce référentiel. Probablement quelque chose comme ça:~/dev/api $ cat .git gitdir: ../.git/modules/api
Donc, au lieu de
rm -f .git/index
, vous devrez faire ceci: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
la source
Ce problème peut se produire lorsqu'un
.git
répertoire se trouve sous l'un des sous-répertoires. Pour le corriger, vérifiez s'il existe d'autres répertoires .git, supprimez-les et réessayez.la source
J'ai fait un truc simple. Je clone le dépôt dans un nouveau dossier. Copiez le dossier .git du nouveau dossier dans l'ancien dossier du repo, en remplaçant .git.
la source
Plus d'informations sur https://www.chris-shaw.com/blog/quick-fix-for-git-corrupt-index
la source
C'est ridicule mais je viens de redémarrer ma machine (mac) et le problème a disparu comme s'il ne s'était jamais produit. Je déteste ressembler à un gars de soutien ...
la source
Vous pouvez également essayer de restaurer la version précédente du fichier (si vous utilisez Windows OS)
la source