tipos tag remove qué practices oneline log hace etiquetas crear best git diff case-insensitive

tag - Cómo realizar diferencias de mayúsculas y minúsculas en Git



tipos de etiquetas en git (2)

git diff no admite una comparación de archivos que no distinga mayúsculas de minúsculas. Google muestra a muy pocas personas que solicitan esa función, y eso también solo en combinación con algún otro conmutador de git diff , como con -G o con --color-words .

No me interesan los otros interruptores, siempre que git diff pueda mostrarme la diferencia entre mayúsculas y minúsculas.

Como no vi ninguna pregunta específica hacia eso, y como encontré una solución después de una hora de investigar este problema, agrego esta pregunta y la respuesta.


La solución es utilizar git difftool . Con el siguiente comando de configuración, puedo agregar una herramienta de diff personalizada llamada idiff para que la use Git:

git config --global difftool.idiff.cmd ''diff -i $LOCAL $REMOTE''

Con esta personalización, puedo ver la comparación entre mayúsculas y minúsculas, así:

git difftool --tool idiff <other diff options> <Git references or files>

P.ej.

git difftool -t idiff HEAD~1 -- my_schema.sql

Dado que git difftool solicita (para sí / no) cada vez que invoque la herramienta, use -y switch para difftool o agregue esta opción de configuración para evitar la solicitud:

git config --global difftool.prompt 0


Para ampliar la respuesta de Gurjeet Singh y el comentario de Colw Colordiff, en Windows hice lo siguiente para unirlo todo:

  1. Si es necesario, instale la distribución de Strawberry Perl para Windows. Cualquier distribución de Windows Perl debería funcionar, pero Strawberry Perl es software libre / código abierto y viene con baterías incluidas. Tenga cuidado con el resultado del sitio web porque hay un sitio NSFW con un dominio similar IIRC. Usa Google en lugar de adivinar.

  2. Instale MinGW / MSYS. Git para Windows ya viene con una compilación de MSYS, por lo que es posible que solo pueda usar su marca (1), pero su millaje puede variar.

  3. Descargue e instale el script Perl de Colordiff. Edité el Makefile para cambiar la ubicación de instalación a ~ / bin y ~ / etc (donde ~ es% USERPROFILE%) porque ~ / bin ya está en mi RUTA. Ajuste según sea necesario.

  4. (cmd.exe) Edite las variables de entorno del registro (busque en el menú de inicio las variables de entorno) y agregue .PL a PATHEXT (y cualquier contenedor / que usó para PATH si es necesario).

  5. (cmd.exe) Cree una secuencia de comandos bash (por ejemplo, ~ / bin / colordiffless.bash) que pase cualquier argumento a colordiff.pl (colordiff acepta opciones de diferencias y las pasa automáticamente) y canaliza menos (1). Los códigos de color emitidos por colordiff son ANSI, que cmd.exe no entenderá, pero menos lo hará. También restaura el comportamiento del localizador de Git de esta manera (configure la variable de entorno LESS si es necesario).

    #!/bin/bash colordiff.pl "$@" | less

  6. Configure el alias como lo hizo Gurjeet, excepto que en lugar de invocar diff invoque directamente su script de bash. La salida de los códigos de color es ANSI, por lo que necesitará algo para convertirlos. ¡Sé que MSYS menos (1) hará eso y tú también preservas el comportamiento del buscapersonas de Git!

    git config --global difftool.cldiff.cmd "colordiffless.bash -ui $LOCAL $REMOTE"

    (de cmd.exe, por lo que las comillas dobles son literales y el $ LOCAL y $ REMOTE también son texto literal)

  7. Finalmente, alias el comando difftool para que pueda escribir un solo comando personalizado en lugar del comando difftool:

    git config --global alias.cldiff "difftool -y -t cldiff"

Editar

Me equivoqué sobre el comportamiento del buscapersonas. difftool invoca el comando para cada archivo, por lo que, en lugar de obtener un solo resultado de buscapersonas con cada diff, obtendrá un buscapersonas para cada archivo. Para resolverlo, probablemente querrá envolver difftool -y en un script y canalizar toda su salida a menos.