Estos mensajes se deben a un valor predeterminado incorrecto de core.autocrlfen Windows.
El concepto de autocrlfes manejar conversiones de terminaciones de línea de manera transparente. Y lo hace!
Malas noticias : el valor debe configurarse manualmente.
Buenas noticias : solo debe hacerse UNA vez por instalación de git (también es posible la configuración por proyecto).
Cómo autocrlffunciona :
core.autocrlf=true: core.autocrlf=input: core.autocrlf=false:
repo repo repo
^ V ^ V ^ V
/ \ / \ / \
crlf->lf lf->crlf crlf->lf \ / \
/ \ / \ / \
Aquí crlf= marcador de fin de línea estilo win, lf= estilo unix (y mac osx).
(pre-osx crno se ve afectado por ninguna de las tres opciones anteriores)
¿Cuándo aparece esta advertencia (en Windows)
- autocrlf= truesi tiene estilo unix lfen uno de sus archivos (= RARAMENTE),
- autocrlf= inputsi tiene estilo win crlfen uno de sus archivos (= casi SIEMPRE),
- autocrlf= false- ¡NUNCA!
¿Qué significa esta advertencia?
La advertencia " LF será reemplazado por CRLF " dice que usted (tener autocrlf= true) perderá su LF de estilo Unix después del ciclo de confirmación de compra (será reemplazado por CRLF de estilo Windows). Git no espera que uses LF de estilo unix en Windows.
La advertencia " CRLF será reemplazado por LF " dice que usted (tener autocrlf= input) perderá su CRLF de estilo Windows después de un ciclo de confirmación de compra (será reemplazado por LF de estilo Unix). No lo use inputdebajo de las ventanas.
Otra forma más de mostrar cómo autocrlffunciona
1) true: x -> LF -> CRLF
2) input: x -> LF -> LF
3) false: x -> x -> x
dónde x es CRLF (estilo Windows) o LF (estilo Unix) y las flechas representan
file to commit -> repository -> checked out file
Como arreglar
El valor predeterminado para core.autocrlfse selecciona durante la instalación de git y se almacena en todo el sistema gitconfig ( %ProgramFiles(x86)%\git\etc\gitconfig). También hay (en cascada en el siguiente orden):
- gitconfig "global" (por usuario) ubicado en ~/.gitconfig, otro más
- gitconfig "global" (por usuario) en $XDG_CONFIG_HOME/git/configo $HOME/.config/git/configy
- "local" (por repo) .git/configen el directorio de trabajo.
Entonces, escribe git config core.autocrlf en el directorio de trabajo para verificar el valor utilizado actualmente y
- agregar autocrlf=falsea la solución # por sistema de gitconfig en todo el sistema
- git config --global core.autocrlf false # solución por usuario
- git config --local core.autocrlf false # por proyecto
Advertencias
: la git configconfiguración puede ser anulada por la gitattributesconfiguración.
-crlf -> lf conversión solo ocurre al agregar nuevos archivos, los crlfarchivos que ya existen en el repositorio no se ven afectados.
Moral (para Windows):
- use core.autocrlf= truesi planea usar este proyecto también en Unix (y no está dispuesto a configurar su editor / IDE para usar terminaciones de línea Unix),
- use core.autocrlf= falsesi planea usar este proyecto solo en Windows ( o ha configurado su editor / IDE para usar terminaciones de línea unix),
- nunca use core.autocrlf= a inputmenos que tenga una buena razón para hacerlo ( p . ej. si está utilizando utilidades Unix en Windows o si tiene problemas con los archivos MAKE),
PD: ¿Qué elegir al instalar git para Windows?
Si no va a utilizar ninguno de sus proyectos en Unix, no esté de acuerdo con la primera opción predeterminada. Elige el tercero ( Checkout as-is, commit as-is ). No verás este mensaje. Siempre.
PPS Mi preferencia personal es configurar el editor / IDE para usar finales de estilo Unix, y configurarlo core.autocrlfen false.