example commits branches git diff git-diff

commits - git diff example



Ignorar*todos*los cambios de espacios en blanco con git-diff entre confirmaciones (2)

Ignora todos los cambios en el espacio en blanco con git-diff entre confirmaciones

Esta pregunta parecía que podría ofrecer una respuesta al principio, pero trata las diferencias entre dos archivos específicos, no entre dos confirmaciones específicas. Todo lo demás que apareció al buscar también fue un callejón sin salida ...

Creo que tienes problemas porque Git es la herramienta incorrecta para el trabajo. No facilita la tarea, y ceder para acomodar la herramienta es el enfoque equivocado. Se supone que las herramientas funcionan para usted y no al revés .

Realice un segundo clon y luego revise la revisión inicial en cuestión. Luego, ejecute diff en ellos utilizando su revisión actual: diff -bur --ignore-all-space <dir1> <dir2> .

Estas son algunas de las opciones para diff

-i, --ignore-case ignore case differences in file contents -E, --ignore-tab-expansion ignore changes due to tab expansion -Z, --ignore-trailing-space ignore white space at line end -b, --ignore-space-change ignore changes in the amount of white space -w, --ignore-all-space ignore all white space -B, --ignore-blank-lines ignore changes where lines are all blank

Estoy revisando una base de código y arreglando rarezas de espacios en blanco y, en general, corrigiendo la sangría y esas cosas, y quiero asegurarme de que no he hecho ningún otro cambio inadvertidamente, así que estoy haciendo git diff -w para mostrar las diferencias en todos los cambios archivos mientras ignora las diferencias de espacios en blanco. El problema es que esto no está ignorando todas las diferencias de espacios en blanco, al menos lo que considero que son simplemente diferencias de espacios en blanco. Por ejemplo, en el siguiente resultado de git diff -w ,

-"Links": -{ - - "Thermal": - -{ - + "Links": { + "Thermal": {

puedes ver que solo he

  1. eliminó líneas en blanco superfluas,
  2. poner llaves en el extremo de la línea de la clave cuyo valor abren, y
  3. sangrado para adaptarse al contexto

Esta pregunta parecía que podría ofrecer una respuesta al principio, pero trata las diferencias entre dos archivos específicos, no entre dos confirmaciones específicas. Todo lo demás que apareció buscando fue un callejón sin salida también. Por ejemplo, esta pregunta se trata de fusionar, no mostrar diferencias, y esta pregunta trata sobre mostrar diferencias de nivel de palabra, y así sucesivamente.


Quizás haya una mejor respuesta, pero la mejor solución que he encontrado hasta ahora es esta.

Primero, debe controlar la definición de "espacio en blanco" que Git está utilizando actualmente. Cree o edite el .gitconfig en su proyecto, para incluir

[core] whitespace = -trailing-space,-indent-with-non-tab,-tab-in-indent

A continuación, debe controlar la definición de una palabra utilizada. En lugar de usar git diff -w , agregue --word-diff-regex=[^[:space:]] :

git diff -w --word-diff-regex=[^[:space:]]

Aún verá el contexto, que (en mi caso, ya que estoy tratando de asegurarme de que no haya diferencias, excepto las diferencias de espacios en blanco) no es útil. Puedes usar -U0 para decirle a Git que te dé 0 líneas de contexto, así,

git diff -w -U0 --word-diff-regex=[^[:space:]]

pero seguirá obteniendo resultados que se parecen bastante al contexto, pero sigue siendo mucho mejor que mirar todos los cambios con cuidado y manualmente para asegurarse de que solo sean cambios en espacios en blanco.