Cómo resolver el Error":mala índice Fatal:índice de archivo dañado" cuando el uso de Git
-
12-09-2019 - |
Pregunta
Después de git init
, He añadido y cometió un par de archivos, se hicieron algunos cambios, añadidos y comprometido.Configurar el demonio git (que se ejecuta bajo Cygwin en windows xp) y clonado el repositorio una vez.Ahora, me sale este error con el repositorio clonado:
$ git status
error: bad index file sha1 signature
fatal: index file corrupt
Hay alguna forma de solucionar este problema, además de recibir una nueva copia del repositorio?
Solución
Si el problema es con el índice como el área de ensayo para las confirmaciones (es decir .git/index
), puede simplemente eliminar el índice (hacer una copia de seguridad si lo desea), y luego restaurar el índice a la versión en la última confirmación:
En OSX / Linux:
rm -f .git/index
git reset
En Windows:
del .git\index
git reset
(El comando reset
anterior es el mismo que git reset --mixed HEAD
)
Puede utilizar alternativamente nivel inferior href="http://git-scm.com/book/ch9-1.html" git read-tree
en lugar de git reset
.
Si el problema es con PACKFILE , puede recuperarla usando git index-pack
.
Otros consejos
Es posible que haya dañado accidentalmente el archivo .git / índice con una sed en su raíz del proyecto (refactorización tal vez?) Con algo como:
sed -ri -e "s/$SEACHPATTERN/$REPLACEMENTTEXT/g" $(grep -Elr "$SEARCHPATERN" "$PROJECTROOT")
para evitar esto en el futuro, simplemente ignorar los archivos binarios con su grep / sed:
sed -ri -e "s/$SEACHPATTERN/$REPLACEMENTTEXT/g" $(grep -Elr --binary-files=without-match "$SEARCHPATERN" "$PROJECTROOT")
Esto suena como un mal clon. Usted podría intentar lo siguiente para obtener más información (posiblemente?):
git fsck --full
Yo tuve ese problema, y yo tratamos de ti arreglar con esto:
rm -f .git/index
git reset
PERO no funcionó. La solución?Por alguna razón me había otros .git carpetas en subdirectorios.Borrarlos .git carpetas (no el principal) y git reset
de nuevo.Una vez que se han eliminado, todo funcionó de nuevo.
Esto funcionó para mí. Aunque tengo curiosidad de la razón por la que empecé a recibir los errores en el primer lugar. Cuando me conecté a cabo ayer, que estaba bien. Entrar en esta mañana, no lo era.
rm .git/index
git reset
Dado que las soluciones anteriores me dejó con problemas continuos, he utilizado esta solución opaca:
- clonar una nueva copia de la repo en otra parte
- copiar el directorio .git fresco en el repositorio (roto) que contenía los cambios que quería cometer
resolvieron el problema. Por cierto, hice un sed
en la raíz del proyecto como @hobs adivinado. Aprendido la lección.
Nota para los usuarios submódulo git - las soluciones aquí no va a funcionar para usted como está
. Digamos que usted tiene un repositorio padre llamado dev
, por ejemplo, y su repositorio submódulo se llama api
.
si está dentro de api
y se obtiene el error mencionado en esta pregunta:
error: bad index file sha1 signature
fatal: index file corrupt
El archivo index
NO estará dentro de una carpeta .git
. De hecho, el .git
ni siquiera será una carpeta - que será un documento de texto con la ubicación de los datos reales .git para este repositorio. Probablemente algo como esto:
~/dev/api $ cat .git
gitdir: ../.git/modules/api
Así que, en lugar de rm -f .git/index
, tendrá que 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
Este problema puede ocurrir cuando hay un directorio .git
debajo de uno de los subdirectorios. Para solucionarlo, comprobar si hay otros directorios .git allí, y eliminarlos y vuelve a intentarlo.
Yo estaba frente mismo problema Cambiar el nombre de archivo de índice en .git / índice y el trabajo de reposición a continuación, git para mí.
rm -f .git/index
git reset
Más información en https: // www. chris-shaw.com/blog/quick-fix-for-git-corrupt-index
Esto es ridículo, pero me acaba de reiniciar mi máquina (mac) y el problema desapareció como si nunca hubiera pasado. Odio sonar como un individuo de la ayuda ...
También puede tratar de restaurar a la versión anterior del archivo (si está utilizando el sistema operativo Windows)