Con Git, ¿cómo apago la advertencia "LF será reemplazado por CRLF"


153

Con Git, cuando se usa la autocrlf = truebandera, todavía se da una advertencia cuando se cambian los finales de línea.

Entiendo para qué sirve la advertencia y cómo desactivar el indicador de final de línea, pero ¿cómo desactivo la advertencia en sí?


Todas las respuestas aquí son obsoletas, después de que git introdujo gitattributes. Safecrlf es tu amigo autocrlf no lo es. Por favor, vea mi respuesta
Rusi

Respuestas:


279

Puede desactivar la advertencia con

git config --global core.safecrlf false

(Esto solo desactivará la advertencia, no la función en sí).


¿apagar la advertencia evitará que git reemplace lf por crlf? @chronial
aidonsnous

3
@aidonsnous de git docs : si core.safecrlf está configurado como "verdadero" o "advertir", git verifica si la conversión es reversible para la configuración actual de core.autocrlf. Para "verdadero", git rechaza las conversiones irreversibles; para "advertir", git solo imprime una advertencia pero acepta una conversión irreversible. Si no necesita rechazar las conversiones irreversibles, establecer core.safecrlf en falso suprime la advertencia, pero sigue convirtiéndose automáticamente.
Danny Libin

5

Deberías usar core.autocrlf inputy core.eol input. O simplemente no deje que git cambie las terminaciones de línea en absoluto autocrlf falsey elimine el resaltado de crlfs en diffs, etc.concore.whitespace cr-at-eol .

Espero que esto ayude


Por lo general, desea que sus secuencias de comandos BAT finalicen y se comprometan con CRLF, y su secuencia de comandos SH con LF.
Sandburg

0

Estás buscando la core.whitespaceopción (ver git config --helppara más detalles).

Puede configurar esta opción así:

$ git config core.whitespace cr-at-eol

0

Solía ​​de esta manera:

Guarde sus archivos actuales en Git, para que no se pierda nada de su trabajo.

git add . -u
git commit -m "Saving files before refreshing line endings"

Eliminar todos los archivos del índice de Git.

git rm --cached -r .

Reescribe el índice de Git para recoger todas las nuevas terminaciones de línea.

git reset --hard

Agregue todos los archivos modificados y prepárelos para una confirmación. Esta es su oportunidad de inspeccionar qué archivos, si alguno, no se modificaron.

git add .
# It is perfectly safe to see a lot of messages here that read
# "warning: CRLF will be replaced by LF in file."

Confirma los cambios en tu repositorio.

git commit -m "Normalize all the line endings"

https://help.github.com/articles/dealing-with-line-endings/


13
Creo que el OP estaba tratando de evitar ver esas advertencias más. No normalizar todas las terminaciones de línea.
Mike Cluck

git rm --cached -r . && git reset --hardparece hacer el truco, gracias
Shanimal

0

Curiosamente, había aplicado ambas configuraciones como se explica aquí, y mi archivo .gitconfig contenía estas 2 líneas:

[core]
       autocrlf = false
       whitespace = cr-at-eol

Sin embargo, recibí la advertencia. Ahora, solo para probar, comenté ambas líneas y la advertencia desapareció. Sin embargo, no tengo idea de por qué los puse en primer lugar ...


0

Establecer "core.safecrlf false" funciona. Sin embargo, después de cambiar el valor a 'verdadero', la salida cambia de 'advertencia' a 'fatal' como se muestra a continuación.

$ git add -A
warning: LF will be replaced by CRLF in .gitignore.
The file will have its original line endings in your working directory

$ git config --global core.safecrlf false

$ git reset

$ git config --global core.safecrlf true

$ git add -A
fatal: LF would be replaced by CRLF in .gitignore

$

En git reciente es mejor usar gitattributes que autocrlf. Mira mi respuesta . Todas las respuestas (en esta q) son viejas y obsoletas
Rusi
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.