Mi editor está cambiando los finales de línea de mis archivos fuente. Cuando lo hago git diff
, veo la misma línea dos veces, una con -
y otra con +
, sin diferencia visible.
¿Cómo puedo git diff
mostrarme cuál fue realmente este cambio?
Respuestas:
Primero, asegúrese de que está utilizando la salida en color (por ejemplo, con git diff --color
) y que ha habilitado el resaltado de espacios en blanco con (por ejemplo)
git config color.diff.whitespace "red reverse"
Sin embargo, es posible que esto no funcione en todos los casos, ya git
que no parece resaltar los espacios en blanco finales para las líneas eliminadas . Para ver los espacios en blanco que eliminó, simplemente use
git diff -R
para poner el espacio en blanco en el lado 'agregado' de la comparación, donde se resalta.
Para obtener más detalles, consulte las respuestas a esta pregunta SO .
000000f0 2d 2d 7d 0a 2b 2b 7d 0a |--}.++}.|
el 7d es la llave '}'.
Puede ver la diferencia de final de línea con el siguiente comando.
git diff | cat -v
Luego se imprime "^ M" para la terminación CRLF (DOS), nada para la terminación LF (Unix).
Aparentemente, git diff está haciendo lo correcto, imprimiendo caracteres CR y LF para el final de CRLF. Pero debido a que la consola consume CR, no podemos verlo. Al usar cat -v, podemos hacerlo visible.
git diff > somediff && vi somediff
vim también muestra CRLF como ^ M. pero el cat -v
está limpio.
cat
que no conocía. :-)
Una forma de ver los cambios en los espacios en blanco es hacer una "diferencia de palabra" carácter por carácter con
git diff --color --word-diff-regex=.
Esto resalta todos los cambios de espacios en blanco en todas partes de las líneas . Los espacios en blanco eliminados se envuelven en [-
y -]
y se agregan espacios en blanco en {+
y +}
.
Alternativamente, como sugirió Alex
git diff --color --ws-error-highlight=new,old
resalta todos los cambios de espacios en blanco al final de las líneas .
git diff --ws-error-highlight=new,old
resalta las diferencias de espacios en blanco en las líneas cambiadas.
Una herramienta gráfica de diferencias le mostrará mejor el cambio, inténtelo git difftool
.
Use meld y configure las preferencias para mostrar espacios en blanco. (Editar -> Preferencias -> Mostrar espacios en blanco).
Otras herramientas gráficas probablemente tengan opciones similares: la respuesta + comentario de @ Cotton le dice cómo hacer esto con vimdiff.
git difftool --tool=meld doesn't
incluso lanza Meld. No sé si es porque hay un rebase en curso o no.
git config diff.wsErrorHighlight all