2010-10-13 11 views
46

Mi editor está cambiando las terminaciones de línea de mis archivos fuente. Cuando hago git diff, veo la misma línea dos veces - una vez con - y una vez con + - sin diferencia visible.git diff - muéstrame los cambios de final de línea?

¿Cómo obtengo git diff para mostrarme en qué consistió realmente este cambio?

Respuesta

5

Una herramienta gráfica de diferencias le mostrará el cambio mejor - intente git difftool.

Use meld, y configure las preferencias para mostrar espacios en blanco. (Editar -> Preferencias -> Mostrar espacios en blanco.)

Otras herramientas gráficas probablemente tienen opciones similares - @ Cotton's answer + comment le dice cómo hacer esto con vimdiff.

+0

Es posible que una herramienta gráfica de diferencias no esté disponible.La respuesta de @paul-whittaker funcionará en el contexto implícito en la pregunta (alguna terminal). – beOn

44

En primer lugar, asegúrese de que está utilizando la salida de color (por ejemplo, con git diff --color) y que ha habilitado un espacio en blanco resaltado con (por ejemplo)

git config color.diff.whitespace "red reverse" 

Esto podría no funcionar en todos los casos, sin embargo, como git no parece resaltar el espacio en blanco final para eliminado líneas. Para ver el espacio en blanco que has eliminado, utilice simplemente

git diff -R 

para poner el espacio en blanco en el lado 'añadido' de la comparación, en donde se pone de relieve.

Para obtener más información, consulte las respuestas en this SO question.

+0

Esta es la respuesta real, aunque debo admitir que es divertido ver el espacio rojo en la nueva línea. ¡Gracias! – zeh

5
git diff --ws-error-highlight=new,old 

resalta los espacios en blanco diffs en líneas cambiadas.

6

Una forma de ver los cambios de espacio en blanco es hacer un carácter por carácter "palabra diff" con

git diff --color --word-diff-regex=. 

Esto pone de relieve cambia todos los espacios todas partes en líneas. Los espacios en blanco eliminados se envuelven en [- y -] y se agregaron espacios en blanco en {+ y +}.

Alternativamente, como suggested by Alex

git diff --color --ws-error-highlight=new,old 

resalta todos los cambios espacios en blanco al extremos de las líneas.

7

Puede ver la diferencia de final de línea con el siguiente comando.

git diff | cat -v 

Entonces "^ M" se imprime por CRLF final, nada de LF (Unix) que termina (DOS).

Aparentemente git diff está haciendo lo correcto, imprimiendo caracteres CR y LF para finalizar CRLF. Pero como CR es consumido por la consola, no podemos verlo. Al usar cat -v, podemos hacerlo visible.

Cuestiones relacionadas