windows - tag - ¿Por qué se muestra ''Actualizando el índice de Git''?
¿qué hace git log-oneline? (2)
Estoy usando Windows. Al organizar archivos obtengo este error.
Updating the Git index failed. A rescan will be automatically started to resynchronize git-gui.
seguido de una lista de archivos que se han convertido de LF a CRLF
Después de leer mucho sobre el problema CRLF / LF con el uso cruzado de Git, comprendo más o menos lo que está sucediendo, y estoy tratando de determinar qué configuración de autocrlf es mejor para mí, pero no puedo entender por qué Git dice que La actualización del índice falló. Tengo entendido que ha convertido los EOF, cuál es el problema y por qué me dice que la actualización del índice ha fallado. ¿Debo arreglar algo (que no sea elegir una configuración de autocrlf adecuada) o puedo simplemente continuar?
Luego tengo dos opciones Continuar y Desbloquear índice, ¿qué significan estos y cuál es el mejor curso de acción?
También me encontré con esto aunque mi configuración de core.autocrlf
ya es false
y core.safecrlf
está desactivada. Sospecho que el culpable es la configuración de configuración diff.astextplain.textconv
.
Cuando ejecuté git config --list
, la siguiente línea se muestra en el resultado:
diff.astextplain.textconv=astextplain
No creo que esta configuración esté realmente relacionada con la advertencia / error, pero me inspiró para ver la conversión de texto que podría estar haciendo. Después de un poco de espeleología en línea y en mi repositorio, descubrí la siguiente línea en el archivo .gitattributes de mi repositorio:
* text=auto
[Probablemente obtuve el archivo .gitattributes de GitHub.]
Dado que solo la línea anterior no fue comentada en ella, y además que lidiar con conversiones ''automágicas'' de final de línea siempre ha sido un dolor de cabeza, opté por eliminar ese archivo de mi repositorio. Después de hacerlo, la puesta en escena de los mismos archivos ya no me provocó la advertencia / error "Actualización del índice de Git".
git config --global core.autocrlf false
Siempre he sido mi recomendación (ver " Git 1.6.4 beta en Windows (msysgit) - terminación de línea Unix o DOS ").
Sin embargo, en su caso, puede "Continuar", pero esta advertencia está allí para mencionar que la conversión de ciertos archivos podría no ser reversible:
core.safecrlf
Si es verdadero, hace que git compruebe si la conversión de CRLF es reversible cuando la conversión de fin de línea está activa. Git verificará si un comando modifica un archivo en el árbol de trabajo directa o indirectamente. Por ejemplo, si se compromete un archivo seguido de la extracción del mismo archivo, se obtendrá 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 "warn", en cuyo caso git solo advertirá sobre una conversión irreversible pero continuará la operación.
Si no desea ver esta advertencia, como se explica en este hilo , puede configurar core.safecrlf
en false
.
También puede esconder sus archivos a través del menú de herramientas de git gui, y agregar algunas opciones a esas herramientas con, por ejemplo, este archivo de configuración de git .
El interés es que, para cada herramienta, puede agregar:
guitool.<name>.norescan
No vuelva a explorar el directorio de trabajo para ver los cambios una vez que la herramienta finalice la ejecución.
¿Podría explicar un poco sobre el índice de desbloqueo?
Puede ver ese mensaje en el index.tcl
git-gui : elimina el archivo index.lock que git-gui crea al manipular el índice.
Puede ver más en la página de documentación de "lockfile API" :
Exclusión mutua
Cuando$GIT_DIR/index.lock
un nuevo archivo de índice, primero creamos un nuevo archivo$GIT_DIR/index.lock
, escribimos los nuevos contenidos y lo$GIT_DIR/index
destino final$GIT_DIR/index
.
Intentamos crear el$GIT_DIR/index.lock
conO_EXCL
para que podamos notar y fallar cuando alguien más ya está tratando de actualizar el archivo de índice.