git corruption

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:

  1. clonar una nueva copia del repositorio en otro lado
  2. 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.