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
- eliminó líneas en blanco superfluas,
- poner llaves en el extremo de la línea de la clave cuyo valor abren, y
- 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.