Estoy ejecutando git-diff en un archivo, pero el cambio está al final de una larga línea.
Si uso las teclas del cursor para moverme hacia la derecha, pierde la codificación de colores, y peor aún, las líneas no se alinean, lo que dificulta el seguimiento del cambio.
¿Hay alguna manera de evitar ese problema o simplemente hacer que las líneas se envuelvan?
Estoy ejecutando Git 1.5.5 a través de mingw32.
git diff --color-words | fold
fold
pero elimina el color. Como especificas--color-words
, supongo que lograste pasar colores afold
. ¿Cómo?Respuestas:
La visualización de la salida de
git diff
es manejada por cualquier localizador que esté utilizando.Comúnmente, bajo Linux,
less
se usaría.Puede decirle a git que use un buscapersonas diferente configurando la
GIT_PAGER
variable de entorno. Si no le importa la paginación (por ejemplo, su terminal le permite desplazarse hacia atrás), puede intentar configurar explícitamenteGIT_PAGER
que se vacíe para detenerlo con un buscapersonas. Bajo Linux:Sin un buscapersonas, las líneas se ajustarán.
Si su terminal no admite salida de color, también puede desactivarlo utilizando el
--no-color
argumento o colocando una entrada en la sección de color de su archivo de configuración de git.fuente
O si usa menos como buscapersonas predeterminado, simplemente escriba
-S
mientras visualiza la diferencia para volver a habilitar el ajuste en menos.fuente
--word-diff
para ver un resaltado codificado por colores de palabras cambiadas--word-diff
parte merece tener su propia respuesta sobre esto, ya que me parece que estoy haciendo mucho para ayudar a resolver el problema subyacente: descubrir qué ha cambiado en una larga fila. Entonces, lo hice uno: stackoverflow.com/a/19253759/313756-S
con una S mayúscula, no-s
. Menos muestra un mensaje "Doblar líneas largas (presione RETORNO)" en la parte inferior después de escribir-S
, y luego presionar Volver habilita el ajuste.También puede usar
git config
para configurar el buscapersonas para envolver.Establece la configuración del localizador para el proyecto actual.
Establece el localizador globalmente para todos los proyectos.
fuente
git config --global core.pager "less -r"
man less
,-r
no dice nada sobre envolver.Con todo el crédito a Josh Diehl en un comentario a esta respuesta , sin embargo, siento que esta debería ser una respuesta en sí misma, por lo que lo agrego:
Una forma de tratar de ver las diferencias en las líneas largas es usar un diff orientado a palabras. Esto se puede hacer con:
En este caso, obtendrá una salida diff significativamente diferente, que le muestra específicamente lo que ha cambiado dentro de una línea.
Por ejemplo, en lugar de obtener algo como esto:
Puede obtener algo como esto:
O, con la coloración, en lugar de esto:
Puede obtener esto:
Ahora, si está comparando una línea realmente larga, aún puede tener problemas con la situación del localizador que describió originalmente y que se ha abordado, aparentemente con satisfacción, en otras respuestas. Con suerte, esto le brinda una nueva herramienta, sin embargo, para identificar más fácilmente lo que ha cambiado en la línea.
fuente
--word-diff
:color
,plain
, yporcelain
. Además, se puede cambiar la expresión regular para los límites de palabras con--word-diff-regex
. El valor predeterminado parece ser\S+
. ( v2.1.1 )--color-words
parece ser una forma abreviada--word-diff=color
, lo cual es bueno cuando solo estás viendo el diff, no compartiéndolo.--word-diff=porcelain
más que--word-diff
porqueporcelain
alineará los cambios en líneas separadas, mientras que--word-diff
coloca los cambios en línea. Las líneas separadas le permiten ver las diferencias más fácilmente cuando las diferencias son sutiles.Para usar menos como localizador y hacer que el ajuste de línea sea permanente, simplemente puede habilitar la opción de plegar líneas largas:
De esta manera, no tiene que escribirlo mientras usa menos.
Salud
fuente
git config --global core.pager 'less -S
Solo busqué en Google este.
GIT_PAGER='less -r'
funciona para mifuente
less -R
(En realidad, yo usoless -eiFRSX
, que también resuelve los problemas de color yMac OSX: Ninguna de las otras respuestas, excepto la '-S' de alguien45 mientras menos se está ejecutando, funcionó para mí. Se necesitó lo siguiente para hacer que el ajuste de texto sea persistente:
fuente
-+$LESS
haciendo el parámetro? A menos que git lo defina, mi variable de entorno MENOS ni siquiera está configurada.$LESS
se establece en algún valor (p. Ej. Por a.login
o a.profile
o algo), y esa opción, creo, solo agrega los valores predeterminados y luego los agrega-FRX
.$LESS
no está definido.Desde Git 1.5.3 ( septiembre de 2007 )
Una
--no-pager
opción ha estado disponible.¿Cómo evito que git diff use un buscapersonas?
Ejemplo
A partir de v2.1, el ajuste predeterminado es
Notas de la versión de Git v2.1
fuente
Ocho años después, encuentro una respuesta superior, de /superuser/777617/line-wrapping-less-in-os-x-specífico-for-use-with-git-diff :
Ahora canaliza el git diff a través del pliegue, primero, luego a menos: envuelto, menos altura de página es correcta, mantenga el resaltado de sintaxis.
fuente
Cuando usa "git diff" y muestra varias páginas (ve ":" al final de la página) en este caso puede escribir "-S" y presionar enter (S debe ser mayúscula). alternará las líneas largas y plegadas.
fuente
Nadie señaló esto hasta ahora. Es bastante simple de recordar y no es necesario realizar ninguna configuración adicional en la configuración de git
fuente
git diff --color | less -FR
para pequeños cambios cuando no es necesario desplazarseSimplemente podría canalizar la salida de git diff a más:
fuente
No es una solución perfecta, pero
gitk
ygit-gui
puede mostrar tanto esta información, y tienen barras de desplazamiento.fuente
enumere la configuración actual / predeterminada:
luego actualice y omita el -S como:
the -S: hace que las líneas más largas que el ancho de la pantalla se corten en lugar de doblarse.
fuente
Cuando tengo 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 buscar para obtener primero las dos versiones del archivo.
fuente