El editor de text Atom agrega este símbolo a cada línea vacía.
¿Alguna idea de qué y por qué?
Estoy en Ubuntu Linux y noté el ^ M (Carriage Return, Line Feed) durante git diff
.
De alguna manera, se seleccionó CRLF en la parte inferior de la barra de estado:
Simplemente hice clic y cambié a LF:
Parece que se establece file por file, por lo que deberá cambiarse para cada file problemático.
En mi caso, de alguna manera todos los finales de línea habían sido cambiados, así que git diff
era un mar de rojo. Usé lo siguiente para identificar cambios 'reales':
git diff --ignore-space-at-eol
Sin embargo, el git commit
aún enterraría los cambios 'reales' en el historial de commits así que yo:
git stash save
git commit -am "fix line endings"
git stash apply
Ahora las terminaciones de línea han desaparecido y los commits se pueden hacer en una diferencia precisa.
¿Estás usando el editor de text Atom en Windows?
El retorno de carro de Windows es \r\n
mientras está \n
en Unix.
^M
( 0xD
o \r
) es el carácter de retorno de carro en Windows.
Creo que ese file se guardó previamente en Unix (y ya tiene \n
en cada línea), por lo que Atom agrega \r
como lo requiere Windows.
Para más información puedes ver esto y esto
La mayoría de las soluciones que he encontrado en línea implican el uso de sed, vi o emacs. Encontré una solución que funciona directamente dentro de Atom (y probablemente cualquier editor de text), no se necesita una command-line.
Seleccione todas las devoluciones, o obtenga un selector al comienzo de cada línea, luego elimínelo y presione regresar. Puede tomar un segundo, pero eliminará todos los ^ ^ caracteres.
Esto probablemente arruine su sangrado, pero puede auto-sangrar. Esto puede no ser eficiente si tiene varios files con los que necesita hacer esto, pero es una solución rápida y sucia para un solo file.
Compruebe la parte inferior del editor, que podría haber cambiado las terminaciones de línea de file.
Por lo general, es LF para Unix
y CRLF para windows