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 LF
por 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
.gitattributes
archivo ycore.eol
directivas .No: estás en Windows, y la
git config
pá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/git
nú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
LF
solo.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 commit
solo 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/checksafe
convierteint conv_flags
", 13/01/2018, Git 2.17.0) en el ciclo Git 2.17 provocó que lasautocrlf
reescrituras 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=true
será 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=true
Error 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 false
funciona bien para configuraciones globales.Pero si está utilizando Visual Studio, es posible que también deba modificar
.gitattributes
algún tipo de proyecto ( por ejemplo, la aplicación de biblioteca de clase c # ):* text=auto
fuente
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=true
y ahora no recibo esos mensajes.fuente
Si está utilizando Visual Studio 2017, 2019, puede:
fuente
.gitconfig
o.git/config
, no.gitignore
, que especifica los archivos que git debe ignorar.Haz una cosa simple:
fuente