Git diff -w ignora espacios en blanco solo al inicio y al final de las líneas

367

Me encanta usar git diff -wpara ignorar las diferencias de espacios en blanco. Pero, acabo de notar que ignora incluso las diferencias de espacios en blanco en el medio de las líneas. ¿Cómo podría ignorar las diferencias de espacios en blanco que aparecen al principio (^) o al final ($) de las líneas?

ma11hew28
fuente
31
Considerado usar en su git diff -blugar?
Jonas Byström
55
"-b --ignore-space-change Ignora los cambios en la cantidad de espacios en blanco. Esto ignora los espacios en blanco al final de la línea y considera que todas las demás secuencias de uno o más caracteres de espacios en blanco son equivalentes".
mowwwalker

Respuestas:

451

Para uso al final de la línea:

git diff --ignore-space-at-eol

En lugar de lo que estás usando actualmente:

git diff -w (--ignore-all-space)

Para comenzar la línea ... no tienes suerte si quieres una solución integrada.

Sin embargo, si no le importa ensuciarse las manos, hay un parche bastante viejo flotando en algún lugar que agrega soporte para "--ignore-space-at-sol".

Código falso mono Rashid
fuente
Gracias, pero no funciona si configuró el diff para una herramienta externa ... ¿alguna idea?
adardesign
@adardesign, creo que probablemente tendría que configurarse en la herramienta externa. No estoy seguro de si hay algo que git pueda hacer para presentar la diferencia sin cambios en los espacios en blanco ... aunque podría estar equivocado; git es bastante poderoso ...
Johnny
Sería bueno tenerlo configurado de forma predeterminada. Me refiero a -w o -b o --ignore-all-space. Hay una discusión al respecto en stackoverflow.com/questions/7310033/…
Artyom
8
Estoy de acuerdo con la sugerencia -b, ya que -w trata "abc def" y "abcdef" como lo mismo, ¡lo cual rara vez es lo que quiero!
Richard Wiseman
3

Esta es una vieja pregunta, pero todavía se ve / necesita regularmente. Quiero publicar para advertir a los lectores como yo que el espacio en blanco como se menciona en la pregunta del OP no es lo mismo que la definición de Regex, para incluir nuevas líneas, pestañas y caracteres de espacio: Git le pide que sea explícito. Vea algunas opciones aquí: https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

Como se indicó, git diff -bo git diff --ignore-space-changeignorará los espacios en los extremos de la línea. Si desea que esa configuración sea su comportamiento predeterminado, la siguiente línea agrega esa intención a su archivo .gitconfig, por lo que siempre ignorará el espacio en los extremos de la línea:

git config --global core.whitespace trailing-space

En mi caso, encontré esta pregunta porque estaba interesado en ignorar las "diferencias de espacios en blanco de retorno de carro", así que necesitaba esto:

git diff --ignore-cr-at-eolo git config --global core.whitespace cr-at-eoldesde aquí .

También puede hacerlo predeterminado solo para ese repositorio omitiendo el parámetro --global y comprobando el archivo de configuración para ese repositorio. Para el problema de CR que enfrenté, desaparece después del check-in si warncrlf o autocrlf = true en la sección [core] del archivo .gitconfig.

deasserted
fuente