git winmerge difftool mergetool

¿Cómo puedo hacer que WinMerge sea mi git mergetool?



difftool (9)

Estoy tratando de integrar WinMerge con Git como he visto antes en Windows 7 Ultimate.

He seguido los siguientes pasos, pero un error sigue apareciendo cuando hago un git mergetool que por defecto es vimdiff.

Creé un archivo llamado winmerge.sh en el directorio raíz de git: C / Program Files (x86) / Git / with: WinMergeU es la ubicación correcta.

#!/bin/sh echo Launching WinMergeU.exe: $1 $2 "C:/Program Files (x86)/WinMerge/WinMergeU.exe" git /e /u /dl "Base" /dr "Mine" "$1" "$2"

y utiliza los siguientes comandos.

git config --global diff.tool winmerge git config --global difftool.winmerge.cmd "winmerge.sh /"$LOCAL/" /"$REMOTE/"" git config --global difftool.prompt false

El error aparece como:

git config option merge.tool set to unknown tool: winmerge


¡Git 2.5+ (Q2 2015) incluirá Winmerge como un conocido git mergetool !

Si Winmerge está en su %PATH% , git config merge.tool winmerge todo lo que necesita hacer es git config merge.tool winmerge !
(También funciona para la herramienta de diferencias: git config diff.tool winmerge )

Ver commit 3e4f237 por David Aguilar ( davvid ) , 20 de mayo de 2015.
(Fusionada por Junio ​​C Hamano - gitster - in commit 324a9f4 , 01 jun 2015)
Ayudado por: Philip Oakley ( PhilipOakley ) , Johannes Schindelin ( dscho ) , Sebastian Schuberth ( sschuberth ) , SZEDER Gábor ( szeder )

Toda la configuración ahora está hecha para usted directamente en Git, con mergetools/winmerge :

  • comando diff: "$merge_tool_path" -u -e "$LOCAL" "$REMOTE"
  • comando de combinación: "$merge_tool_path" -u -e -dl Local -dr Remote "$LOCAL" "$REMOTE" "$MERGED"

mergetools : agregar winmerge como una herramienta incorporada

Agregue un scriptlet winmerge con los comandos descritos en este hilo para que los usuarios puedan usar winmerge sin necesidad de realizar ninguna configuración adicional.


Aquí está el mío (en %userprofile%/.gitconfig , o ~/.gitconfig en * nix), sin envoltorio (Win 7 Home Pro):

[diff] tool = winmerge [difftool "winmerge"] cmd = c:/path/to/winmergeu.exe -e -u -x -wl -wr -dl "base" -dr "mine" /"$LOCAL/" /"$REMOTE/"



Ejemplo:

git config --global --add diff.tool winmerge git config --replace --global difftool.winmerge.cmd "/"C:/Program Files (x86)/WinMerge/WinMergeU.exe/" -e -u -dl /"Base/" -dr /"Mine/" $LOCAL $REMOTE" git config --global difftool.prompt false


Esto es más fácil de hacer y es lo que funcionó para mí:

git config --global diff.tool winmerge git config --replace --global difftool.winmerge.cmd "/"C:/path to winmerge/WinMergeU.exe/" -e -u -dl /"Base/" -dr /"Mine/" $LOCAL $REMOTE" git config --global difftool.prompt false


Para hacer WinMerge como herramienta de comparación y combinación para Visual Studio 2017 Git Plugin:

Desde el símbolo del sistema de windows: escriba >> git config --global --edit que abrirá el archivo .getconfig para editar.

Por favor, actualice con el siguiente comando:

[mergetool] prompt = false keepBackup = false keepTemporaries = false [merge] tool = winmerge [mergetool "winmerge"] name = WinMerge trustExitCode = true cmd = /"C://Program Files (x86)//WinMerge//WinMergeU.exe/" -e -u -dl /"Base/" -dr /"Mine/" /"$LOCAL/" /"$REMOTE/" /"$MERGED/" [diff] tool = winmerge [difftool "winmerge"] name = WinMerge trustExitCode = true cmd = /"C://Program Files (x86)//WinMerge//WinMergeU.exe/" -u -e $LOCAL $REMOTE


Si decide utilizar SourceTree (o para cualquier buscador de Google con SourceTree), puede usar WinMerge para la herramienta de combinación configurando la herramienta de combinación como personalizada, señalando el comando Difundir a WinMergeU.exe, generalmente:

C:/Program Files (x86)/WinMerge/WinMergeU.exe

En argumentos utiliza:

-e -u -dl "Mine" -wr -dr "Theirs" $LOCAL $REMOTE $MERGED

Eso hará que el lado izquierdo (etiquetado como "Mío") sea editable y será el archivo de salida cuando guarde en WinMerge. El lado derecho (etiquetado como "Sus") será de solo lectura (ese es el argumento -wr), esto es necesario porque WinMerge envía todos los archivos guardados al archivo $ MERGED, por lo que si se editan ambos lados, se mostrará el lado izquierdo y luego sobrescribe eso con el lado derecho; mejor para evitar ese tipo de confusión.

Si deja activada la opción de archivo de copia de seguridad, WinMerge generará un archivo .bak. El contenido de este archivo será el archivo original del lado izquierdo o el segundo al último archivo de salida si guardó varias veces. Puede desactivar esto o agregar * .bak a su archivo .gitignore.

El propio Git creará un archivo de conflicto * .orig DESPUÉS de que se resuelva el conflicto, en caso de que lo arruine. De nuevo, puede agregar * .orig a su archivo .gitignore o desactivar esta función. Desafortunadamente, SourceTree no tiene una opción de GUI para esto, así que inicie su git bash o, si eligió la opción PATH correcta durante la instalación, el símbolo del sistema de Windows y haga esto:

git config --global mergetool.keepBackup false

Eso evitará que Git cree los archivos * .orig. También puede editar directamente el archivo de configuración ubicando el archivo .gitconfig en la raíz de su directorio de usuario. Si sabe cómo usar VIM, puede editar todo con este comando:

git config --global --edit


Su ruta es incorrecta, debe ser "/c/Program Files (x86)/WinMerge/WinMergeU.exe" .

Se está ejecutando en un entorno de shell shell, no en el símbolo del sistema nativo de Windows.


Usted está hablando acerca de la herramienta de combinación , sin embargo, usted (y algunas otras personas con respuestas) lo están configurando como una herramienta de diferencias .

Para configurar una herramienta de combinación, necesitarías usar las configuraciones merge.tool y mergetool lugar de diff.tool y difftool , como esto:

git config --global merge.tool winmerge git config --replace --global mergetool.winmerge.cmd "/"C:/Program Files (x86)/WinMerge/WinMergeU.exe/" -e -u -dl /"Base/" -dr /"Mine/" /"$LOCAL/" /"$REMOTE/" /"$MERGED/"" git config --global mergetool.prompt false

Y luego puedes usar

git mergetool

que te abrirá los dos archivos para editar.

Kudos para @dvdvck mencionando en los comentarios que en los parámetros de la línea de comandos puede especificar un tercer archivo para el archivo de resultados para winmerge (parámetro de ruta de salida).

Para completar, mencionaré que también existe esta idea orientada a la configuración completa de winmerge tanto para la herramienta de diferencia como para la de fusión.