not have from for endings crlf changed change autocrlf git eol

have - git commit come fatal error "fatal: CRLF sería reemplazado por LF en"



line endings have changed from lf to crlf (6)

Estoy usando Ubuntu 13.10 x64, y estoy trabajando en un proyecto que algunos desarrolladores están usando Windows, recientemente cambié el git config core.eol a "lf" y core.autocrlf a "input" y core.safecrlf a "true ". Desde entonces, cuando intento enviar el archivo a mi repositorio local, aparece este error:
fatal: CRLF would be replaced by LF in ......
Por lo que entiendo, si configuro core.eol en "lf" y core.autocrlf en "input", git convertirá automáticamente CRLF en LF, pero ¿por qué core.autocrlf este error? ¿Como puedo solucionar este problema?

Gracias.


Debe agregar todos los archivos que muestra el git status como modificado:

git add file1 git add file2

Y luego comprometa sus cambios:

git commit

Esto mantendrá sus archivos locales como están, pero los autocrlf en el repositorio remoto.


Este es un problema clásico:


(foto del blog de Luis Tubes )

La solución habitual es convertir esos archivos usted mismo, con dos2unix o Swiss File Knife .

Siempre he preferido mantener core.autocrlf en false , lo que significa:

git config --global core.autocrlf false


Esto me sucedió en miles de archivos. Así que escribí un guión rápido de bash para que dos2unix arreglara para mí. Alguien más en Linux o Mac podría encontrarlo útil.

#!/usr/bin/env bash _unwindows() { local errmsg; local filepath; # base case errmsg="$(git add . 2>&1)"; if [ $? -eq 0 ]; then echo "Successfully converted CRLF to LF in all files."; echo "Successfully ran `git add .`."; echo "Done."; return 0; fi; filepath="${errmsg#*fatal: CRLF would be replaced by LF in }"; filepath="${filepath%.*}"; if [ "${filepath}" = "${errmsg}" ]; then echo "Regex failed. Could not auto-generate filename from stderr."; return 1; fi; if [ ! -e "${filepath}" ]; then echo "Regex failed. ''${filepath}'' does not exist."; return 1; fi; dos2unix "${filepath}"; if [ $? -ne 0 ]; then echo "Failed to run /`dos2unix ''${filepath}''/`."; return 1; fi; # recursive case _unwindows; }; _unwindows;

Básicamente, trata de hacer git add . . Si el comando falla, toma el nombre del archivo incompatible de la salida del error. Luego ejecuta dos2unix en ese archivo. Sigue repitiendo este proceso hasta que git add . trabajos.

Si ejecuta esto, debería ver dos2unix: converting file xxx to Unix format... repetidamente. Si no lo haces, no funciona, así que simplemente presiona ctrl + c o command + c para detenerlo.


Tuve el mismo problema y probé la solución sugerida sin éxito.

Tuve que ejecutar un segundo comando para que funcione:

$ git config --global core.autocrlf false $ git config --global core.safecrlf false


Uno puede simplemente probar dos2unix:

dos2unix [filename]


$ git config core.autocrlf false