tag practices delete create crear commits commands best git version-control diff dvcs

practices - ¿Cómo puedo ver la salida de `git show` en un visor de diferencias como meld, kdiff3, etc.



git tag commands (5)

La respuesta Geogrebrock está bien, pero se puede mejorar así:

commit=$1 shift git difftool $commit~1 $commit $@

Ponlo en el archivo ejecutable (chmod + x) en algún lugar de $ PATH.

Ahora puede pasar argumentos adicionales, por ejemplo, especificar qué archivos desea ver (e ignorar otros):

$ git showtool 6a40ec6ffb9338b0548aefab92fded1bffb1648a -- src-cmn/

Hay muchas preguntas de SO que muestran cómo ver el resultado de un comando de git diff en un visor de diferencias como git difftool usando git difftool o de otra manera. No estoy preguntando sobre git diff sin embargo.

Quiero ver la salida de git show <previous commit sha1> en un visor de diferencias como meld. ¿Cómo puedo hacer esto?


Partiendo de la respuesta de georgebrock, puedes crear un alias en .gitconfig, algo como esto:

showtool = "!showci () { rev=${1:-HEAD}; git difftool $rev~1 $rev; }; showci $1"

Luego puede ejecutarlo con git showtool abc123 (sin necesidad de crear un script de shell separado para esto). Si omite la revisión, se seleccionará por defecto HEAD.


Puede usar git difftool para mostrar una única confirmación.

Digamos que quiere ver la confirmación con el sha1 abc123 :

git difftool abc123~1 abc123

( ~1 le dice a git que se mueva a la confirmación anterior, por lo que abc123~1 es la confirmación antes de abc123 )

Si usa esto regularmente, puede hacer un comando personalizado de git para hacerlo más fácil:

  1. Cree un archivo llamado git-showtool algún lugar de su $PATH con los siguientes contenidos:

    git difftool $1~1 $1

  2. Dale a ese archivo permisos de ejecución:

    chmod +x ~/path/to/git-showtool

  3. Use el comando git showtool <sha1 or tag or ...>

  4. Lucro.

Sobre la base de la respuesta de Sagitarrian, aquí hay un pequeño cambio para una sintaxis de rev más genérica:

showtool = "!showci () { rev=$(git rev-parse /"${*:-HEAD}/"); git difftool $rev~1 $rev; }; showci"

Uso rev-parse para permitir de forma transparente las expresiones rev complejas.

Eliminé los $1 al final, ya que se llama al alias seguido de los argumentos; pasa desapercibido cuando se usa solo $1 pero rompe el comportamiento $* .

Esto permite hacer cosas agradables como:

git showtool :/some nasty bug


Traduciendo la sugerencia de Sagitario para la comprensión de menos git, agréguela a su archivo .gitconfig global que reside en C: / Usuarios [nombre de usuario] si usted es un usuario de Windows:

[alias] showtool = "!showci () { rev=${1:-HEAD}; git difftool $rev~1 $rev; }; showci $1"

o puede ejecutar el siguiente comando en el shell get bash:

git config --global alias.showtool ''!showci () { rev=${1:-HEAD}; git difftool $rev~1 $rev; }; showci $1''

que hará el cambio al archivo .gitconfig por usted.