git tortoisegit git-diff tortoisegitmerge

¿Se puede usar TortoiseMerge como difftool con Windows Git Bash?



tortoisegit git-diff (3)

¡Gran respuesta! Me ahorró un montón de tiempo. Un inconveniente es que los archivos recién agregados o eliminados del repositorio no aparecerán durante la ejecución del comando difftool. Esto es lo que hice además de esto: (Inspirado por la answer mi compañero de trabajo).

  1. Cree un archivo llamado empty.empty en el directorio $Home (C: / home). Y como su nombre lo sugiere, manténgalo vacío.
  2. Cree otro archivo llamado tortoisediff.sh en el directorio $Home/bin (C: / home / bin) con el siguiente contenido

:

#!/bin/sh # $LOCAL $REMOTE seem to be swapped # $1 is $LOCAL # $2 is $REMOTE difftool=''/c/Program Files/TortoiseGit/bin/TortoiseGitMerge.exe'' NULL="/dev/null" empty="C:/home/empty.empty" if [ "$1" == "$NULL" ]; then echo "Added: " "$2" "$difftool" /base:"$empty" /mine:"$2" /readonly:"$empty" elif [ "$2" == "$NULL" ]; then echo ''Removed: '' "$1" "$difftool" /base:"$1" /readonly:"$1" /mine:"$empty" else echo ''Modified'' "$2" "$difftool" /base:"$1" /basename:"$1" /readonly:"$1" /mine:"$2" /minename:"$2" fi # Checkout https://tortoisegit.org/docs/tortoisegitmerge/tme-automation.html for more

  1. Modifique su archivo .gitconfig (Línea 11 de la respuesta)

    cmd = tortoisediff.sh "$LOCAL" "$REMOTE"

Esto ahora haría que difftool se refiera a tortoisediff.sh en lugar de abrir la aplicación directamente.

  1. Tenga en cuenta: tendría que ejecutar git add . seguido de git difftool --staged lugar de simplemente git difftool .

Estoy empezando a trabajar con Git. Me gustaría utilizar TortoiseMerge como difftool y mergetool.

En mi .gtconfig en mi directorio personal de usuarios tengo las siguientes secciones. Eliminé las secciones de usuario y color para esta pregunta.

[merge] tool = tortoisemerge [mergetool "tortoisemerge"] cmd = /"TortoiseMerge.exe/" -base:/"$BASE/" -mine:/"$LOCAL/" -theirs:/"$REMOTE/" -merged:/"$MERGED/" [diff] tool = tortoisemerge [difftool "tortoisemerge"] cmd = /"TortoiseMerge.exe/" -base:/"$BASE/" -mine:/"$LOCAL/" -theirs:/"$REMOTE/" -merged:/"$MERGED/"

Si escribo tortoisemerge en el indicador de Git Bash, se carga. Se sabe que está en el camino. Pero si escribo el comando obtengo el siguiente error.

Rich:mygittest (master *) $ git difftool error: ''tortoisemerge'' can only be used to resolve merges merge tool candidates: kompare emerge vimdiff No known merge resolution program available. external diff died, stopping at readme.txt. Rich:mygittest (master *) $

¿Qué no estoy entendiendo para que esto funcione? Tortoisemerge está instalado con TortoiseSVN.


La siguiente configuración funciona bien para mí. Sin embargo, estoy usando TortoiseGit y no TortoiseSVN. Observe la diferencia en los parámetros para diff.

[diff] tool = tortoisediff [difftool] prompt = false [merge] tool = tortoisemerge [mergetool] prompt = false keepBackup = false [difftool "tortoisediff"] cmd = /""c:/Program Files/TortoiseGIT/bin/TortoiseGitMerge.exe"/" -mine "$REMOTE" -base "$LOCAL" [mergetool "tortoisemerge"] cmd = /""c:/Program Files/TortoiseGIT/bin/TortoiseGitMerge.exe"/" -base "$BASE" -theirs "$REMOTE" -mine "$LOCAL" -merged "$MERGED"


Para que los nombres de archivos con espacios se manejen correctamente, debe cambiar la última línea de la respuesta de @ melbourn a

cmd = /""c:/Program Files/TortoiseGIT/bin/TortoiseGitMerge.exe"/" -base "$BASE" -theirs "$REMOTE" -mine "$LOCAL" -merged "$MERGED"