git diff - manejo de líneas largas?
Pregunta
Estoy ejecutando git-diff en un archivo, pero el cambio está al final de una línea larga.
Si uso las teclas de cursor para moverme a la derecha, pierde la codificación de colores y, lo que es peor, las líneas no se alinean, lo que dificulta el seguimiento del cambio.
¿Hay alguna forma de evitar ese problema o simplemente hacer que las líneas se ajusten?
(ejecutando git 1.5.5 a través de mingw32)
Solución
La visualización de la salida de git diff
es manejada por cualquier buscapersonas que estés usando.
Comúnmente, bajo Linux, se usaría less
.
Puedes decirle a git que use un buscapersonas diferente configurando la variable de entorno GIT_PAGER
. Si no le importa la paginación (por ejemplo, su terminal le permite retroceder), puede intentar configurar explícitamente GIT_PAGER
para que se vacíe y dejar de usar un localizador. Bajo Linux:
$ GIT_PAGER='' git diff
Sin un buscapersonas, las líneas se ajustarán.
Si su terminal no es compatible con la salida de color, también puede desactivar esta opción utilizando el argumento --no-color
, o colocando una entrada en la sección de color de su archivo de configuración de git.
$ GIT_PAGER='' git diff --no-color
Otros consejos
O si usa menos como buscapersonas predeterminado, simplemente escriba -S
mientras ve el diff para volver a habilitar el ajuste en menos.
También puedes usar git config
para configurar el paginador para envolver.
$ git config core.pager 'less -r'
Establece la configuración de buscapersonas para el proyecto actual.
$ git config --global core.pager 'less -r'
Establece el buscapersonas globalmente para todos los proyectos
Con crédito completo para Josh Diehl en un comentario a esta respuesta ??a >, Sin embargo, siento que esto debería ser una respuesta en sí misma, por lo que agregarlo:
Una forma de lidiar con ver las diferencias en líneas largas es usar un diff orientado a palabras. Esto se puede hacer con:
git diff --word-diff
En este caso, obtendrás una salida de diferencia significativamente diferente, que te muestra específicamente lo que ha cambiado dentro de una línea.
Por ejemplo, en lugar de obtener algo como esto:
diff --git a/test-file.txt b/test-file.txt
index 19e6adf..eb6bb81 100644
--- a/test-file.txt
+++ b/test-file.txt
@@ -1 +1 @@
-this is a short line
+this is a slightly longer line
Puede que obtengas algo como esto:
diff --git a/test-file.txt b/test-file.txt
index 19e6adf..eb6bb81 100644
--- a/test-file.txt
+++ b/test-file.txt
@@ -1 +1 @@
this is a [-short-]{+slightly longer+} line
O, con colorización, en lugar de esto:
Puede obtener esto:
Ahora, si está comparando una línea realmente larga, es posible que aún tenga problemas con la situación del localizador que describió originalmente y que se haya abordado, aparentemente a satisfacción, en otras respuestas. Sin embargo, espero que esto le brinde una nueva herramienta para identificar más fácilmente lo que ha cambiado en la línea.
Para utilizar menos como buscapersonas y hacer que el ajuste de línea sea permanente, simplemente puede habilitar la opción de plegar líneas largas:
git config --global core.pager 'less -+S'
De esta manera, no tiene que escribirlo mientras usa menos.
Saludos
Sólo busqué en Google este. GIT_PAGER = 'less -r'
funciona para mí
Mac OSX: ninguna de las otras respuestas, excepto la "-S" de alguien, mientras que menos funciona, funcionó para mí. Tomó lo siguiente para hacer que el ajuste de palabra sea persistente:
git config --global core.pager 'less -+$LESS -FRX'
Desde Git 1.5.3 ( Sep 2007 )
una opción --no-pager
ha estado disponible.
git --no-pager diff
¿Cómo evito que git diff use un buscapersonas?
A partir de v2.1, el ajuste es el predeterminado
Ocho años después, encuentro una respuesta superior, de https://superuser.com/questions/777617/line-wrapping-less-in-os-x-specifically-for-use-with-git-diff :
git config core.pager `fold -w 80 | less`
Ahora canaliza el git diff a través del plegado, primero, luego a menos: ajustado, menos altura de página es correcto, mantenga el resaltado de sintaxis.
Puede simplemente canalizar la salida de git diff a más:
git diff | more
No es una solución perfecta, pero gitk
y git-gui
pueden mostrar esta información,
y tener barras de desplazamiento.
Cuando estás usando " git diff " y muestra varias páginas (ves ": " al final de la página) en este caso, puedes escribir " -S " y presiona enter. (S debe ser mayúscula). cambiará las líneas largas de pliegue.
Nadie señaló esto hasta ahora. Es bastante sencillo de recordar y no es necesario realizar ninguna configuración adicional en la configuración de git
git diff --color | less -R
listar la configuración actual / predeterminada:
$ git config --global core.pager
less -FXRS -x2
luego actualice y deje fuera la opción -S como:
$ git config --global core.pager 'less -FXR -x2'
la -S: hace que las líneas más largas que el ancho de la pantalla se recorten en lugar de doblarlas.
Cuando estoy en problemas, a menudo recurro a DiffMerge. Excelente herramienta de diferencias que tiene resaltado de diferencias en línea. Además, en las últimas versiones agregaron un modo para tener un modo horizontal.
Sin embargo, no he podido configurar git para usarlo. Así que tengo que andar por ahí para obtener ambas versiones del archivo primero.
La forma más fácil de hacerlo, en mi caso, uso el sistema operativo Linux
git diff > text.txt
Esta línea de comando crea y coloca la salida de git diff dentro de text.txt luego puede abrirlo con otro editor de texto, por ejemplo, texto sublime.
sublime text.txt
Espero que te ayude.
no olvides borrarlo después. = 0)