Configuración de la herramienta diff con .gitconfig

8 minutos de lectura

Configuracion de la herramienta diff con gitconfig
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?

  • 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

Configuracion de la herramienta diff con gitconfig
Ö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.

  • yo hice git config --global diff.tool diffmerge pero cuando lo hice git diff myfile.txt todavía me dio la diferencia predeterminada de Unix

    – anfibio

    31 de enero de 2014 a las 19:24

  • ¿Quizás tiene una configuración local que define otra herramienta diff?

    – Omer Dagan

    2 de febrero de 2014 a las 8:10

  • quizás necesite pasar los parámetros correctos para diffmerge: este enlace explica cómo hacerlo para fusionar: enlace: nathanhoad.net/how-to-meld-for-git-diffs-en-ubuntu-hardy

    – Puttaraju

    15 de abril de 2014 a las 5:41


  • @amphibient: prueba git diffherramienta myfile.txt para usar la herramienta.

    – JBRWilkinson

    6 de abril de 2016 a las 15:09


1646749274 746 Configuracion de la herramienta diff con gitconfig
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?

  • ¿Qué quiere decir con una herramienta de diferenciación “lista para usar” preconfigurada? Para configurar una herramienta de diferenciación externa “winMerge” que no está en su lista, tuve que hacer la misma configuración que mencionó en su publicación y todo comenzó a funcionar sin ninguna configuración adicional. Entonces, ¿eso significa que git admite “winMerge” también desde el primer momento porque, por lo que puedo entender de su publicación, requiere algo de trabajo/configuración/configuración adicional para configurar una herramienta diff que no es compatible de forma inmediata? caja por git.

    – RBT

    23 de marzo de 2017 a las 2:30


Configuracion de la herramienta diff con gitconfig
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.

  • Upvoted para ese último 1%. No hay nada tan satisfactorio como un clavo totalmente martillado 😉

    – Titou

    13 de abril de 2016 a las 11:54

  • ¿Hay alguna forma de convertirla en la herramienta predeterminada?

    – Math0ne

    9 de julio de 2017 a las 8:26

  • Genial, te falta el paso git config --global --add difftool.prompt false, aunque. 😉

    – Suma

    28 de febrero de 2018 a las 11:48

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.

1646749275 995 Configuracion de la herramienta diff con gitconfig
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:

  1. 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
    
  2. 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.

1646749276 726 Configuracion de la herramienta diff con gitconfig
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

1646749276 726 Configuracion de la herramienta diff con gitconfig
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

  • por mencionar --tool opción. Gracias

    – itMaxence

    7 febrero 2019 a las 16:27

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad