¿Qué cambios se git diffmuestran en el archivo? En Windows, he visto problemas con los finales de línea que causan problemas como este. En ese caso, mira qué configuraciones tienes para git config core.autocrlfy git config core.safecrlf. Hay alguna documentación para esta configuración aquí .
Yo diría que si está utilizando git svnpara la integración con Subversion, asegúrese de que autocrlfesté apagado. Por lo que puedo decir, simplemente se rompe en esta configuración y hace que la mayoría de las herramientas piensen que los archivos han cambiado, cuando ha realizado una checkoutpara revertir cualquier cambio.
Si está viendo un problema donde lo hace git checkout, y luego git statusmuestra que el archivo todavía está modificado, y git diffmuestra que el archivo está modificado en cada línea del archivo, entonces este es el problema que está viendo.
core.autocrlf
Si es verdadero, hace que git convierta CRLF al final de las líneas en archivos de texto a LF al leer desde el sistema de archivos, y convierta a la inversa al escribir en el sistema de archivos. La variable se puede configurar como entrada, en cuyo caso la conversión ocurre solo mientras se lee del sistema de archivos, pero los archivos se escriben con LF al final de las líneas. Actualmente, qué rutas considerar "texto" (es decir, someterse al mecanismo de autocrlf) se decide únicamente en función de los contenidos.
core.safecrlf
Si es verdadero, hace que git verifique si la conversión de CRLF controlada por core.autocrlf es reversible. Git verificará si un comando modifica un archivo en el árbol de trabajo, ya sea directa o indirectamente. Por ejemplo, confirmar un archivo seguido de verificar el mismo archivo debería producir el archivo original en el árbol de trabajo. Si este no es el caso para la configuración actual de core.autocrlf, git rechazará el archivo. La variable se puede establecer en "advertir", en cuyo caso git solo avisará sobre una conversión irreversible pero continuará la operación. ...
git checkout HEAD -- index.htmFunciona (salir del último estado comprometido, en lugar de salir del índice)?git checkout HEAD -- index.htm¡trabajó para mi!