Cómo resolver "Error: índice incorrecto-Fatal: archivo de índice dañado" cuando se usa Git
corruption (11)
Como las soluciones anteriores me dejaron con problemas continuos, usé esta solución aburrida:
- clonar una nueva copia del repositorio en otro lado
- copie el nuevo directorio .git en el repositorio (roto) que contenía los cambios que quería confirmar
Hizo el truco. Por cierto, hice un sed
en la raíz del proyecto como @hobs adivinó. Aprendí mi lección.
Después de git init
, agregué y confirmé algunos archivos, hice algunos cambios, agregé y confirmé. Configure el demonio git (que se ejecuta en Cygwin en WinXP) y clone el repositorio una vez. Ahora, recibo este error con el repositorio clonado:
$ git status
error: bad index file sha1 signature
fatal: index file corrupt
¿Hay alguna forma de solucionar esto, aparte de obtener una nueva copia del repositorio?
Es posible que haya dañado accidentalmente el archivo .git / index con un sed en la raíz de su proyecto (¿tal vez refactorización?) Con algo como:
sed -ri -e "s/$SEACHPATTERN/$REPLACEMENTTEXT/g" $(grep -Elr "$SEARCHPATERN" "$PROJECTROOT")
para evitar esto en el futuro, simplemente ignore los archivos binarios con su grep / sed:
sed -ri -e "s/$SEACHPATTERN/$REPLACEMENTTEXT/g" $(grep -Elr --binary-files=without-match "$SEARCHPATERN" "$PROJECTROOT")
Este problema puede ocurrir cuando hay un directorio .git
debajo de uno de los subdirectorios. Para solucionarlo, compruebe si hay otros directorios .git allí, elimínelos e inténtelo de nuevo.
Esto es ridículo, pero acabo de reiniciar mi máquina (mac) y el problema desapareció como si nunca hubiera ocurrido. Odio sonar como un tipo de apoyo ...
Esto funcionó para mí. Aunque tengo curiosidad por la razón por la que comencé a recibir los errores en primer lugar. Cuando me desconecté ayer, estaba bien. Inicia sesión esta mañana, no fue así.
rm .git/index
git reset
Esto suena como un mal clon. Puedes intentar lo siguiente para obtener (¿posiblemente?) Más información:
git fsck --full
Nota para usuarios de submódulos de git: las soluciones aquí no funcionarán para usted tal como está.
Digamos que usted tiene un repositorio principal llamado dev
, por ejemplo, y su repositorio de submódulos se llama api
.
Si estás dentro de la api
y obtienes el error mencionado en esta pregunta:
error: bad index file sha1 signature fatal: index file corrupt
El archivo de index
NO estará dentro de una carpeta .git
. De hecho, .git
ni siquiera será una carpeta: será un documento de texto con la ubicación de los datos reales de .git para este repositorio. Probablemente algo como esto:
~/dev/api $ cat .git gitdir: ../.git/modules/api
Entonces, en lugar de rm -f .git/index
, necesitarás hacer esto:
rm -f ../.git/modules/api/index git reset
o, más generalmente,
rm -f ../.git/modules/INSERT_YOUR_REPO_NAME_HERE/index git reset
Si el problema es con el índice como área de preparación para las confirmaciones (es decir, .git/index
), simplemente puede eliminar el índice (hacer una copia de seguridad si lo desea) y luego restaurar la versión del índice en la última confirmación:
En OSX / Linux:
rm -f .git/index
git reset
En Windows:
del .git/index
git reset
(El comando de reset
anterior es el mismo que el git reset --mixed HEAD
)
Alternativamente, puede utilizar git read-tree
plumbing nivel inferior en lugar de git reset
.
Si el problema es con el índice de packfile de packfile , puede recuperarlo usando git index-pack
.
También puede intentar restaurar la versión anterior del archivo (si está usando Windows OS)
Tuve ese problema, y trato de arreglarlo con esto:
rm -f .git/index
git reset
Pero no funcionó. La solucion ? Por alguna razón tuve otras carpetas .git en subdirectorios. Borro esas carpetas .git (no las principales) y vuelvo a git reset
. Una vez eliminados, todo volvió a funcionar.
rm -f .git/index
git reset
Más información en https://www.chris-shaw.com/blog/quick-fix-for-git-corrupt-index