2011-12-28 23 views
40

Soy nuevo en git y necesito ayuda. Estoy usando msysgit en Windows.Git, agregar archivos al repositorio genera un error fatal para LF -> CRLF

Cuando ejecuto el comando git add [folderName] tengo la respuesta:

fatal: LF would be replaced by CRLF in [.css file or .js file] 

y luego, si se intenta hacer un commit no pasa nada.

$ git commit 
# On branch master 
# 
# Initial commit 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
#  so01/ 
nothing added to commit but untracked files present (use "git add" to track) 

Algunos de estos archivos css/js fueron descargados de la red, así que supongo que por eso la tienen LF. Si abro el archivo y corté/pegué el contenido, entonces aparece el error en el siguiente archivo, y así sucesivamente.

Cualquier ayuda será muy apreciada.

Editar

Configuración core.autocrlf en false parece resolver el problema, pero he leído en muchos puestos de no establecer esta opción en false.

¿Alguien me puede indicar dónde puedo encontrar los problemas que pueden surgir en esta situación?

+0

¿Está trabajando con otros que están en un entorno que no sea las ventanas? –

+2

No. Estoy trabajando en una pequeña aplicación que pondré en appharbor. Hasta ahora todo está bien, pero quería saber cuál es la diferencia en esas opciones. Después de terminar la aplicación, planeo hacer algo de investigación, pero mientras tanto, creo que usaré SO para una solución rápida. – user619656

+0

Entonces, una razón más para establecer autocrlf en falso. No necesitas el dolor de cabeza. Haga que los archivos se confirmen como están. Es una lástima que la configuración predeterminada al instalar msysgit tome la peor opción. –

Respuesta

22

Confíe en los editores de código para manipular sus finales de línea. Auto crlf debe ser falso. No permita que el control de fuente se vuelva demasiado inteligente. Si no necesita tener su herramienta de control de fuente para cambiar las terminaciones de su línea, no lo haga. Esto lastimará.

Reiterando a partir de una respuesta aceptada: "A menos que pueda ver un tratamiento específico que deba tratar con eol nativo, es mejor dejar autocrlf en falso".

También desde el libro progit al final de la sección sobre autocrlf:

"Si eres un programador de Windows haciendo un proyecto sólo para Windows, a continuación, puede desactivar esta funcionalidad, el carro vuelve a grabar en el repositorio estableciendo el valor de configuración en false"

la única ayuda que puedo dar es que si se toma la otra ruta, familiarizarse con vim -b que mostrará caracteres especiales como el CR en msysgit y git show HEAD:path/to/your/file.txt cuales debería mostrarle el archivo en la forma en que git lo almacenó.

Establecer core.whitespace cr-at-eol para tener parches y diffs que no resaltan los CR como posibles espacios en blanco problemáticos.

No vale la pena la molestia. Tienda tal cual.

+0

Auto crlf debe ser falso <- Esto no es así en Windows – prusswan

+2

sí, es cierto en Windows. Nuevamente, no haga nada más que autocrlf = false. He estado haciendo esto durante los últimos 4 años con múltiples equipos en Windows/.net. Puedes hacer otras cosas para caer y lastimarte. Eventualmente establecerás autocrlf en falso. –

+3

¿Por qué su evidencia anecdótica específica de windows/.net es más importante que otras y qué se recomienda en http://progit.org/book/ch7-1.html? – prusswan

6

Probablemente el problema se deba a que configura Git para almacenar archivos internamente con crlf con la configuración core.eol. Cuando agrega un archivo, Git le advierte que lo cambiará al formato interno.

Git funciona mejor con lf terminaciones de línea, por lo que si es posible, siempre trabaje con core.eol = lf.

Esto debe explicar cuándo utilizar core.autocrlf, Why should I use core.autocrlf=true in Git?

También puede que quiera usar core.safecrlf. Consulte git config --help para obtener detalles sobre la configuración.

+0

La respuesta a la que se vinculó dice: "A menos que pueda ver un tratamiento específico que deba tratar con eol nativo, es mejor que deje autocrlf en falso". –

+0

No estoy seguro de por qué recibí un voto negativo por esto? ¿Me he perdido algo? @ AdamDymitruk También da un par de casos donde podría ser utilizado. Creo que es útil saber por qué la opción está allí (si nunca debería usarla, ¿por qué puedo configurarla?) – m0tive

24

muy nuevo en esto, por lo que establecer core.autocrlf en false no tiene demasiado sentido para mí. Así que para otros novatos, vaya al archivo de configuración en el que .git carpeta y agrega:

[core] 
    autocrlf = false 

bajo el título [core].

+11

o desde la línea de comandos ... git config core.autocrlf false – petercoles

0

La autodetección git de formatos funciona bastante bien. Por lo tanto, core.autocrlf=true es una muy buena idea en Windows.

Decir git config --global core.safecrlf=false dice a Git: Hola, por favor convertir mis equivocadas finales de línea (LF solamente) a finales de línea de Windows (CRLF) y no me molesta con él.

Por lo tanto, realmente debería deshabilitar core.safecrlf. respuesta

más largo en: https://stackoverflow.com/a/15471083/873282

+0

@downvoters: explique brevemente por qué rechazó esta respuesta. Esto ayuda (i) a otros a entender por qué esta respuesta no tiene votos y (ii) a mejorar la respuesta. – koppor

Cuestiones relacionadas