
ryanzec
¿Cómo configuro Git para usar una herramienta diferente para diferenciar con el archivo .gitconfig?
Tengo esto en mi .gitconfig:
[diff]
tool = git-chdiff #also tried /bin/git-chdiff
No funciona; simplemente abre la diferencia de línea de comando regular. Cuando lo hago
export GIT_EXTERNAL_DIFF=git-chdiff
luego git diff
abrirá la herramienta de diferenciación externa (así que sé que el script de la herramienta de diferenciación externa funciona bien). ¿Tengo algún problema con mi configuración de .gitconfig para la herramienta diff?

Ömer Dagan
Una forma adicional de hacerlo (desde la línea de comando):
git config --global diff.tool tkdiff
git config --global merge.tool tkdiff
git config --global --add difftool.prompt false
Las dos primeras líneas establecerán la herramienta de diferenciación y la herramienta de combinación en tkdiff
– cambiar eso de acuerdo a sus preferencias. La tercera línea desactiva el mensaje molesto, por lo que cada vez que presiona git difftool
lanzará automáticamente la herramienta de diferenciación.

Federico Pihl
Git ofrece una variedad de herramientas de diferenciación preconfiguradas “listas para usar” (kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, diffuse, opendiff, p4merge y araxis), y también le permite para especificar el tuyo. Para usar una de las herramientas de diferenciación preconfiguradas (por ejemplo, “vimdiff”), agregue las siguientes líneas a su ~/.gitconfig
:
[diff]
tool = vimdiff
Ahora, podrá ejecutar “git difftool” y usar la herramienta que prefiera.
Especificar su propia herramienta de comparación, por otro lado, requiere un poco más de trabajo, consulte ¿Cómo veo la salida de ‘git diff’ con mi herramienta/visor de comparación preferido?

tgoza
Otros han dado una respuesta del 99% sobre esto, pero falta un paso. (Mi respuesta vendrá de OS X, por lo que tendrá que cambiar las rutas de los archivos en consecuencia).
Usted hace estos cambios en su ~/.gitconfig
:
[diff]
tool = diffmerge
[difftool "diffmerge"]
cmd = /Applications/Diffmerge.app/Contents/MacOS/diffmerge $LOCAL $REMOTE
Esto arreglará la herramienta diff. También puede arreglar esto sin editar el ~/.gitconfig
directamente ingresando estos comandos desde la terminal:
git config --global diff.tool diffmerge
git config --global difftool.diffmerge.cmd "/Applications/DiffMerge.appContents/MacOS/diffmerge \$LOCAL \$REMOTE"
El 1% que todos los demás no mencionaron es que al usar esto no puedes simplemente ejecutar git diff myfile.txt
; tienes que correr git difftool myfile.txt
.
Aquí está la parte de mi ~/.gitconfig donde configuro las herramientas de diferenciación y fusión. Me gusta diffmerge de SourceGear. (Me gusta mucho, mucho, de hecho).
[merge]
tool = diffmerge
[mergetool "diffmerge"]
cmd = "diffmerge --merge --result=\"$MERGED\" \"$LOCAL\" \"$(if test -f \"$BASE\"; then echo \"$BASE\"; else echo \"$LOCAL\"; fi)\" \"$REMOTE\""
trustExitCode = false
[diff]
tool = diffmerge
[difftool "diffmerge"]
cmd = diffmerge \"$LOCAL\" \"$REMOTE\"
Entonces, verá, está definiendo una herramienta llamada “diffmerge” en el [difftool "diffmerge"]
línea. Luego estoy configurando la herramienta “diffmerge” como predeterminada en el [diff] tool =
sección.
Obviamente tengo el comando “diffmerge” en mi camino, aquí. De lo contrario, necesitaría dar una ruta completa al ejecutable.

RBT
Reproduciendo mi respuesta de esta pregunta que era más específica para establecer Incomparablemente como herramienta diff para Git. Todos los detalles que he compartido son igualmente útiles para cualquier herramienta de comparación en general, así que los comparto aquí:
El primer comando que ejecutamos es el siguiente:
git config --global diff.tool bc3
El comando anterior crea la siguiente entrada en el archivo .gitconfig
encontrado en el %userprofile%
directorio:
[diff]
tool = bc3
Luego ejecutas el siguiente comando (Ejecutar este comando es redundante en este caso particular y solo se requiere en algunos casos especializados. Lo sabrás en poco tiempo.):
git config --global difftool.bc3.path "c:/program files/beyond compare 3/bcomp.exe"
El comando anterior crea la siguiente entrada en el .gitconfig
expediente:
[difftool "bc3"]
path = c:/program files/Beyond Compare 3/bcomp.exe
Lo que hay que saber aquí es la clave. bc3
. Esta es una clave conocida de Git correspondiente a una versión particular de herramientas de comparación conocidas disponibles en el mercado (bc3
corresponde a la tercera versión de la herramienta Beyond Compare). Si desea ver todas las teclas predefinidas, simplemente ejecute git difftool --tool-help
comando en Git Bash. Devuelve la siguiente lista:
vimdiff
vimdiff2
vimdiff3
araxis
bc
bc3
codecompare
deltawalker
diffmerge
diffuse
ecmerge
emerge
examdiff
gvimdiff
gvimdiff2
gvimdiff3
kdiff3
kompare
meld
opendiff
p4merge
tkdiff
winmerge
xxdiff
Puede utilizar cualquiera de las claves anteriores o definir una clave personalizada propia. Si desea configurar una herramienta nueva por completo (o una versión recién lanzada de una herramienta conocida) que no se asigna a ninguna de las teclas enumeradas anteriormente, puede asignarla a cualquiera de las teclas enumeradas anteriormente o a un nuevo clave personalizada propia.
¿Qué sucede si tiene que configurar una herramienta de comparación que es
- Absolutamente nuevo en el mercado.
O
- Se ha lanzado una nueva versión de una herramienta conocida existente que no está asignada a ninguna clave predefinida en Git
Como en mi caso, había instalado Beyond Compare 4. Beyond Compare es una herramienta muy conocida para Git, pero su versión 4 no está asignada a ninguna de las claves existentes de forma predeterminada. Entonces puede seguir cualquiera de los siguientes enfoques:
-
Puedo asignar la herramienta Beyond Compare 4 a una clave ya existente bc3
que corresponde a la versión Beyond Compare 3. No tenía Beyond Compare versión 3 en mi computadora, así que no me importaba. Si quisiera, también podría haberlo asignado a cualquiera de las teclas predefinidas en la lista anterior, por ejemplo, examdiff
.
Si mapea una versión conocida de herramientas para apropiarse de una clave ya existente/conocida, entonces no necesitará ejecutar el segundo comando ya que Git ya conoce su ruta de instalación..
Por ejemplo, si hubiera instalado la versión 3 de Beyond Compare en mi caja, entonces tendría la siguiente configuración en mi .gitconfig
archivo habría sido suficiente para ponerse en marcha:
[diff]
tool = bc3
Pero si desea cambiar la herramienta asociada predeterminada, terminará mencionando la path
atributo por separado, para que Git conozca la ruta desde donde se debe iniciar el archivo EXE de su nueva herramienta. Aquí está la entrada que obliga a Git a lanzar Beyond Compare 4 en su lugar. Tenga en cuenta la ruta del archivo EXE:
[difftool "bc3"]
path = c:/program files/Beyond Compare 4/bcomp.exe
-
El enfoque más limpio es definir una nueva clave en conjunto para la nueva herramienta de comparación o una nueva versión de una herramienta conocida. Como en mi caso, definí una nueva clave. bc4
, para que sea fácil de recordar. En tal caso, debe ejecutar dos comandos en total, pero su segundo comando no establecerá la ruta del ejecutable de su nueva herramienta. En su lugar, debe configurar el cmd
atributo para su nueva herramienta como se muestra a continuación:
git config --global diff.tool bc4
git config --global difftool.bc4.cmd "\"C:\\Program Files\\Beyond Compare 4\\bcomp.exe\" -s \"\$LOCAL\" -d \"\$REMOTE\""
Ejecutar los comandos anteriores crea las siguientes entradas en su .gitconfig
expediente:
[diff]
tool = bc4
[difftool "bc4"]
cmd = \"C:\\Program Files\\Beyond Compare 4\\bcomp.exe\" -s \"$LOCAL\" -d \"$REMOTE\"
Le recomiendo encarecidamente que siga el enfoque n. ° 2 para evitar confusiones en el futuro.

Pedro Mortensen
Agregar uno de los bloques a continuación funciona para que lo use KDiff3 para mis entornos de desarrollo de Windows y Linux. Es una buena herramienta de combinación y diferenciación multiplataforma consistente.
linux
[difftool "kdiff3"]
path = /usr/bin/kdiff3
trustExitCode = false
[difftool]
prompt = false
[diff]
tool = kdiff3
[mergetool "kdiff3"]
path = /usr/bin/kdiff3
trustExitCode = false
[mergetool]
keepBackup = false
[merge]
tool = kdiff3
ventanas
[difftool "kdiff3"]
path = C:/Progra~1/KDiff3/kdiff3.exe
trustExitCode = false
[difftool]
prompt = false
[diff]
tool = kdiff3
[mergetool "kdiff3"]
path = C:/Progra~1/KDiff3/kdiff3.exe
trustExitCode = false
[mergetool]
keepBackup = false
[merge]
tool = kdiff3

Pedro Mortensen
Si desea tener la opción de usar varias herramientas de diferencias, agregue un alias al archivo .gitconfig:
[alias]
kdiff = difftool --tool kdiff3
Consulte stackoverflow.com/questions/255202/… (posiblemente cierre esto como duplicado)
–Stein G. Strindhaug
20 de junio de 2011 a las 14:16
Publicaciones relacionadas para una variedad de herramientas de diferencias disponibles en el mercado: use BeyondCompare para ver la diferencia entre archivos en GIT, Git: Cómo configurar KDiff3 como herramienta de combinación y herramienta de diferencias, use Winmerge dentro de Git para archivar diferencias, Configuración y uso de Meld como su git difftool y mergetool, Configuración de una herramienta diff para Git en Windows
– RBT
5 de abril de 2018 a las 23:44