env:
- Windows 7
- msysgit
Wheng I git commit, dice:
warning: LF will be replaced by CRLF.
¿Es esta cola de advertencia hacia atrás?
Edito el archivo en Windows, el final de la línea es CRLF, al igual que esta foto:

Y git lo cambia LFpor comprometerse con el repositorio.
Entonces creo que la advertencia correcta es:
warning: CRLF will be replaced by LF.

Respuestas:
Dependiendo del editor que esté utilizando, un archivo de texto con LF no necesariamente se guardará con CRLF: los editores recientes pueden preservar el estilo EOL. Pero esa configuración de git insiste en cambiar esos ...
Simplemente asegúrese de que (como recomiendo aquí ):
De esa manera, evita cualquier transformación automática y aún puede especificarlos a través de un
.gitattributesarchivo ycore.eoldirectivas .No: estás en Windows, y la
git configpágina de ayuda mencionaComo se describe en " git reemplazando LF por CRLF ", solo debería ocurrir al finalizar la compra (no commit), con
core.autocrlf=true.Como se menciona en la respuesta de XiaoPeng , esa advertencia es la misma que:
Como se menciona en el
git-for-windows/gitnúmero 1242 :Nota: Git 2.19 (septiembre de 2018), cuando se usa
core.autocrlf, la advertencia falsa "LF será reemplazado por CRLF" ahora se suprime .Como quaylar comenta correctamente , si hay una conversión en commit, es
LFsolo.Esa advertencia específica "
LF will be replaced by CRLF" proviene de convert.c # check_safe_crlf () :Es llamado por
convert.c#crlf_to_git(), llamado porconvert.c#convert_to_git()sí mismo, llamado por sí mismoconvert.c#renormalize_buffer().Y eso último
renormalize_buffer()solo es llamado pormerge-recursive.c#blob_unchanged().Por lo tanto, sospecho que esta conversión se produce
git commitsolo si dicha confirmación es parte de un proceso de fusión.Nota: con Git 2.17 (Q2 2018), una limpieza de código agrega alguna explicación.
Ver commit 8462ff4 (13 de enero de 2018) por Torsten Bögershausen (
tboegi) .(Fusionada por Junio C Hamano -
gitster- en commit 9bc89b1 , 13 feb 2018)Tenga en cuenta que una regresión introducida en 8462ff4 ("
convert_to_git():safe_crlf/checksafeconvierteint conv_flags", 13/01/2018, Git 2.17.0) en el ciclo Git 2.17 provocó que lasautocrlfreescrituras produjeran un mensaje de advertencia a pesar de la configuraciónsafecrlf=false.Ver commit 6cb0912 (04 de junio de 2018) por Anthony Sottile (
asottile) .(Fusionada por Junio C Hamano -
gitster- en commit 8063ff9 , 28 jun 2018)fuente
core.autocrlf=trueserá siempre ceder en LF en el repositorio, y en mi humilde opinión CRLF en el árbol de trabajo (incluso bajo no es de Windows). Fuente: enlaceSÍ, la advertencia es al revés.
Y, de hecho, ni siquiera debería ser una advertencia en primer lugar. Porque toda esta advertencia dice (pero desafortunadamente al revés) es que los caracteres CRLF en su archivo con terminaciones de línea de Windows serán reemplazados por LF en la confirmación. Lo que significa que está normalizado a las mismas terminaciones de línea utilizadas por * nix y MacOS.
No pasa nada extraño, este es exactamente el comportamiento que normalmente desearía.
Esta advertencia en su forma actual es una de dos cosas:
;)
fuente
- Actualización el 9 de julio ---
Se eliminó "Es correcto y preciso" como comentó @mgiuca
======
NO . NO está hablando de sus archivos actualmente con
CRLF. En cambio, se trata de archivos conLF.Debería leer:
Esta imagen debería explicar lo que significa.
fuente
Todo esto supone
core.autocrlf=trueError original:
Lo que DEBE leer el error:
Explicación aquí :
Básicamente, un archivo local que anteriormente era LF ahora tendrá CRLF localmente
fuente
git config --global core.autocrlf falsefunciona bien para configuraciones globales.Pero si está utilizando Visual Studio, es posible que también deba modificar
.gitattributesalgún tipo de proyecto ( por ejemplo, la aplicación de biblioteca de clase c # ):* text=autofuente
Después de configurar
core.autocrlf=true, estaba obteniendo "LF será reemplazado por CRLF" (nota no "CRLF será reemplazado por LF") cuando estaba editandogit add(¿o tal vez estaba encendidogit commit?) Archivos editados en Windows en un repositorio (que sí usa LF) que se verificó antes de configurarcore.autocrlf=true.Hice un nuevo pago con
core.autocrlf=truey ahora no recibo esos mensajes.fuente
Si está utilizando Visual Studio 2017, 2019, puede:
fuente
.gitconfigo.git/config, no.gitignore, que especifica los archivos que git debe ignorar.Haz una cosa simple:
fuente