Depois git init
, adicionei e enviei alguns arquivos, fiz algumas alterações, adicionei e confirmei. Configure o daemon git (executando o Cygwin no WinXP) e clonou o repositório uma vez. Agora, recebo esse erro com o repositório clonado:
$ git status
error: bad index file sha1 signature
fatal: index file corrupt
Existe alguma maneira de corrigir isso, além de obter uma nova cópia do repositório?
git
corruption
Número8
fonte
fonte
Respostas:
Se o problema estiver no índice como a área de preparação para confirmações (ou seja
.git/index
), você pode simplesmente remover o índice (fazer uma cópia de backup, se desejar) e restaurar o índice para a versão na última confirmação:No OSX / Linux:
No Windows:
(O
reset
comando acima é o mesmo quegit reset --mixed HEAD
)Em alternativa, pode utilizar canalizações de nível inferior em
git read-tree
vez degit reset
.Se o problema estiver no índice para o packfile , você pode recuperá-lo usando
git index-pack
.fonte
:w!
em um:Gstatus
(de fugitive.vim). Essa resposta me salvou muito cabelo puxando.erase /s .git\index
, eu também precisava de umerase .git\index.lock
.git reset --keep
? Na Folha Torre Git fraude é explicado como: Repor o ponteiro HEAD para um commit anterior e preservar as alterações locais não confirmadasgit reset --keep
é uma forma mais segura degit reset --hard
;git reset --mixed
não toca na workdir.Você pode ter acidentalmente corrompido o arquivo .git / index com um sed na raiz do projeto (refatorando talvez?) Com algo como:
para evitar isso no futuro, apenas ignore os arquivos binários com o seu grep / sed:
fonte
.git/index
, sempre pode excluí-lo e recriar comgit reset
(sem--hard
!).sed
com algo comofind .git/ -type f -exec sed -i 's/Legislator/Politician/g' {} \;
Isso pode ajudar se você.git/
estiver tão corrompido quegit reset
não funcionará. Ou talvez você queira restaurar o seu existente.git/index
sem excluí-lo. Isso irá falhar, é claro, se o seu código ou índice original já tiver alguns "legisladores" nele.sed
substituindo meunew_string
pelo meuold_string
!Eu tive esse problema e tento corrigir isso:
Mas não funcionou. A solução ? Por alguma razão, eu tinha outras pastas .git em subdiretórios. Eu apago essas pastas .git (não a principal) e
git reset
novamente. Uma vez excluídos, tudo funcionou novamente.fonte
Isso soa como um clone ruim. Você pode tentar o seguinte para obter (possivelmente?) Mais informações:
fonte
Como as soluções acima me deixaram com problemas contínuos, usei esta solução sem graça:
Fiz o truque. Btw, eu fiz um
sed
na raiz do projeto como @hobs adivinhou. Aprendi minha lição.fonte
Isso funcionou para mim. Embora eu esteja curioso sobre o motivo, comecei a receber os erros em primeiro lugar. Quando eu saí ontem, estava tudo bem. Entre hoje de manhã, não foi.
fonte
Nota para usuários do submódulo git - as soluções aqui não funcionarão para você como está.
Digamos que você tenha um repositório pai chamado
dev
, por exemplo, e seu repositório de submodulo é chamadoapi
.se você estiver dentro
api
e receber o erro mencionado nesta pergunta:error: bad index file sha1 signature fatal: index file corrupt
O
index
arquivo NÃO estará dentro de uma.git
pasta. De fato,.git
nem será uma pasta - será um documento de texto com a localização dos dados .git reais para este repositório. Provavelmente algo como isto:~/dev/api $ cat .git gitdir: ../.git/modules/api
Então, em vez de
rm -f .git/index
, você precisará fazer o seguinte:rm -f ../.git/modules/api/index git reset
ou, de maneira mais geral,
rm -f ../.git/modules/INSERT_YOUR_REPO_NAME_HERE/index git reset
fonte
Esse problema pode ocorrer quando há um
.git
diretório abaixo de um dos subdiretórios. Para corrigi-lo, verifique se há outros diretórios .git lá, remova-os e tente novamente.fonte
Eu fiz um truque simples. Clono o repositório para uma nova pasta. Copiou a pasta .git da nova pasta para a pasta antiga do repositório, substituindo .git lá.
fonte
Mais informações em https://www.chris-shaw.com/blog/quick-fix-for-git-corrupt-index
fonte
Isso é ridículo, mas acabei de reiniciar minha máquina (mac) e o problema desapareceu como se nunca tivesse acontecido. Eu odeio parecer um cara de apoio ...
fonte
Você também pode tentar restaurar a versão anterior do arquivo (se estiver usando o sistema operacional Windows)
fonte