advertencia: LF será reemplazado por CRLF.
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í ):
git config --global core.autocrlf false
De esa manera, evita cualquier transformación automática y aún puede especificarlos a través de un .gitattributes
archivo y core.eol
directivas .
Windows git "LF será reemplazado por CRLF"
¿Esta advertencia está hacia atrás?
No: estás en Windows, y la git config
página de ayuda menciona
Utilice esta configuración si desea tener CRLF
terminaciones de línea en su directorio de trabajo aunque el repositorio no tenga terminaciones de línea normalizadas.
Como se describe en " git reemplazando LF por CRLF ", solo debería ocurrir al finalizar la compra (no commit), con core.autocrlf=true
.
repo
/ \
crlf->lf lf->crlf
/ \
Como se menciona en la respuesta de XiaoPeng , esa advertencia es la misma que:
advertencia: (si lo revisa o clona en otra carpeta con su core.autocrlf
configuración actual ), LF será reemplazado por CRLF
El archivo tendrá sus terminaciones de línea originales en su directorio de trabajo (actual).
Como se menciona en el git-for-windows/git
número 1242 :
Todavía siento que este mensaje es confuso, el mensaje podría extenderse para incluir una mejor explicación del problema, por ejemplo: "LF será reemplazado por CRLF file.json
después de eliminar el archivo y volver a revisarlo".
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 () :
if (checksafe == SAFE_CRLF_WARN)
warning("LF will be replaced by CRLF in %s.
The file will have its original line endings
in your working directory.", path);
else /* i.e. SAFE_CRLF_FAIL */
die("LF would be replaced by CRLF in %s", path);
Es llamado por convert.c#crlf_to_git()
, llamado por convert.c#convert_to_git()
sí mismo, llamado por sí mismo convert.c#renormalize_buffer()
.
Y eso último renormalize_buffer()
solo es llamado por merge-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)
convert_to_git (): safe_crlf / checksafe se convierte en int conv_flags
Al llamar convert_to_git()
, el checksafe
parámetro definió lo que debería suceder si la conversión EOL ( CRLF --> LF --> CRLF
) no se realiza de manera sencilla.
Además, también definió si las terminaciones de línea deben renormalizarse ( CRLF --> LF
) o mantenerse como están.
checksafe fue una safe_crlf
enumeración con estos valores:
SAFE_CRLF_FALSE: do nothing in case of EOL roundtrip errors
SAFE_CRLF_FAIL: die in case of EOL roundtrip errors
SAFE_CRLF_WARN: print a warning in case of EOL roundtrip errors
SAFE_CRLF_RENORMALIZE: change CRLF to LF
SAFE_CRLF_KEEP_CRLF: keep all line endings as they are
Tenga en cuenta que una regresión introducida en 8462ff4 (" convert_to_git()
:
safe_crlf/checksafe
convierte int conv_flags
", 13/01/2018, Git 2.17.0) en el ciclo Git 2.17 provocó que las autocrlf
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)