La salida de git diff / format-patch contiene el carácter ^ M (retorno de carro) (Linux)

Cuando busqué, no vi este problema para el lado de Unix, solo por la incompatibilidad de Unix / MS.

En mi caso, después de editar el código fuente existente (en emacs) y las confirmaciones de transición, la salida generada por git diff o git format-patch pone el carácter de retorno de carro (^ M) al final de cada línea que he agregado.

Por ejemplo, ejecuto git diff master --cached > patch.patch . Mirar el file usando emacs o vim muestra ^M al final de cada línea de código. Por otro lado, el personaje no es visible en nano, less o cat. Si ejecuto git diff master --cached , en el menor progtwig que se inicia, ^M caracteres son visibles después de cada línea de código que he agregado, pero no en la fuente.

¿Cómo resuelvo este problema? Estoy usando CentOS 6, emacs 24.5.1 y git 2.1.0.

core.autocrlf

Si está progtwigndo en Windows y trabajando con personas que no lo son (o viceversa), probablemente se encuentre con problemas de final de línea en algún momento. Esto se debe a que Windows usa tanto un carácter de retorno de carro como un carácter de salto de línea para líneas nuevas en sus files, mientras que los sistemas Mac y Linux usan solo el carácter de salto de línea. Este es un hecho sutil pero increíblemente molesto del trabajo multiplataforma; muchos editores en Windows reemplazan silenciosamente las terminaciones de línea existentes de estilo LF con CRLF, o insertan ambos caracteres de final de línea cuando el usuario pulsa la tecla enter.

Git puede manejar esto auto-convirtiendo terminaciones de línea CRLF en LF cuando agrega un file al índice, y viceversa cuando revisa el código en su sistema de files. Puede activar esta funcionalidad con la configuration core.autocrlf. Si está en una máquina con Windows, configúrelo como verdadero; esto convierte las terminaciones de LF en CRLF cuando retira el código:

$ git config –global core.autocrlf true

Si está en un sistema Linux o Mac que usa terminaciones de línea LF, entonces no desea que Git los convierta automáticamente cuando revisa los files; sin embargo, si accidentalmente se introduce un file con terminaciones CRLF, entonces puede desear que Git lo arregle. Puedes decirle a Git que convierta CRLF a LF en commit pero no al revés configurando core.autocrlf para ingresar:

$ git config –global core.autocrlf input

Esta configuration debería dejarle con terminaciones CRLF en las cajas de Windows, pero terminaciones LF en sistemas Mac y Linux y en el repository.

Si usted es un progtwigdor de Windows que está haciendo un proyecto solo para Windows, puede desactivar esta funcionalidad, registrando los retornos de carro en el repository estableciendo el valor de configuration en falso:

$ git config –global core.autocrlf false

Esto es de la Configuración de Git .

    Intereting Posts