Sí, lo probé antes de publicarlo. El problema fue con mis submódulos que seguían corrompiendo mi archivo de índice (no sé por qué).
karellm
@karellm ¿Descubriste por qué estaba pasando esto?
crmpicco
No, para ser honesto, no investigué qué lo causó y también dejó de suceder.
karellm
Consejo: En mi experiencia, esto puede deberse a que una carpeta NFS no se actualiza. Si su repositorio está en NFS, espere unos minutos antes de intentar corregir el problema. Tuve esto después de extraer de una máquina y luego verificar el estado en otra, ambas máquinas montando el mismo NFS.
ggll
Respuestas:
107
El archivo de índice se ha dañado, pero se puede volver a crear fácilmente. Solo quítalo ...
rm .git/index
Luego, puede volver a agregar los archivos que está intentando organizar.
Como se dijo anteriormente, no funcionaba debido a un conflicto con un submódulo que estaba corrompiendo mi índice una y otra vez ... Eliminé el submódulo, eliminé el índice y agregué todo. Finalmente funcionó. ¡Gracias!
karellm
3
¿Por qué pasó esto? He tenido esto dos veces en la última quincena y no veo una razón para ello.
crmpicco
7
Esto no funcionó para mí. Antes de este error, tenía una copia de trabajo casi limpia. Después de eliminar el archivo de índice y ejecutarlo, git add .se comportó como si cada archivo fuera nuevo y necesitara una confirmación.
Mark
1
Tampoco funciona cuando se tiene un submódulo. Simplemente reinicie (debajo de la respuesta).
TimZaman
Si descubrí que después de ejecutar esto, tuve que hacer una git restore --stagedy solucionó el problema de git pensando que todo debía volver a comprometerse
ViperSniper0501
90
Si desea mantener los cambios locales, utilice lo siguiente:
$ rm .git/index
$ git reset HEAD .
> Unstaged changes after reset:
modified foo.txt
modified bar.txt
¿Alguna idea de por qué sucede esto? Me ha pasado unas 4-5 veces durante los últimos quince días.
crmpicco
1
Esta respuesta es la mejor aquí. Además, avise si usa submódulos git: elimine también esos archivos de índice (se encuentran en .git/modules/src). Esto me hizo preguntarme por qué el error aún se producía después de eliminar el archivo de índice (principal).
Graftak
Supongo que esto podría suceder por razones estándar, el proceso murió a mitad de camino, sin espacio en el disco, etc. Aunque en mi caso podría ser que use un enlace simbólico a la carpeta git para crear directorios para usar en la construcción en lugar de svn externos , aunque es extraño ya que la única operación en esos repositorios es de solo lectura para restablecer las carpetas de compilación.
jgmjgm
2
Para aquellos que tienen isses incluso después de eliminar el índice y no pueden hacer un reinicio. Si desea mantener los cambios, haga lo siguiente (¡no es una solución, sino una fea solución!).
Haga una copia de seguridad de sus archivos, lo que voy a decir debería funcionar, pero hágalo por si acaso.
Eliminar la carpeta .git
Clona tu repositorio (no importa dónde) lo hice en el directorio actual
Copie el directorio creado desde el clon .git en su directorio actual
Elimine el directorio clonado.
6. Opcional, si volvió a utilizar un pago de sucursal.
El estado de Git ahora debería rastrear los cambios como se supone que debe hacer y todos sus comandos de git deberían funcionar
Mi caso fue como se describió anteriormente, git había estropeado sus referencias ... Git logestaba mostrando "su rama parece estar rota" y git fsckme estaba dando advertencias sobre malas referencias. Pensé si probablemente podría arreglarlo, pero pasaría mucho tiempo haciéndolo, así que opté por la fea solución.
Respuestas:
El archivo de índice se ha dañado, pero se puede volver a crear fácilmente. Solo quítalo ...
Luego, puede volver a agregar los archivos que está intentando organizar.
fuente
git add .
se comportó como si cada archivo fuera nuevo y necesitara una confirmación.git restore --staged
y solucionó el problema de git pensando que todo debía volver a comprometerseSi desea mantener los cambios locales, utilice lo siguiente:
fuente
.git/modules/src
). Esto me hizo preguntarme por qué el error aún se producía después de eliminar el archivo de índice (principal).Para aquellos que tienen isses incluso después de eliminar el índice y no pueden hacer un reinicio. Si desea mantener los cambios, haga lo siguiente (¡no es una solución, sino una fea solución!).
Mi caso fue como se describió anteriormente, git había estropeado sus referencias ...
Git log
estaba mostrando "su rama parece estar rota" ygit fsck
me estaba dando advertencias sobre malas referencias. Pensé si probablemente podría arreglarlo, pero pasaría mucho tiempo haciéndolo, así que opté por la fea solución.fuente