2010-03-18 21 views
45

Estoy usando Git Extensions y preinstala y configura KDiff como herramienta de diferencias para resolver conflictos de combinación. Aunque soy muy aficionado a Winmerge y me gustaría reemplazar a KDiff con Winmerge.¿Cómo usar Winmerge con extensiones de Git?

En la configuración de extensiones de Git, hay configuraciones para cambiar Mergetool, pero parece que no puedo entender qué sintaxis debo usar y por qué. Parece que hay 4 variables: $ BASE, $ LOCAL, $ REMOTE, $ MERGED. Parece que debería pasarlos a WinMergeU.exe, pero ¿con qué parámetros de línea de comandos?

He intentado buscar esto algunas veces, pero no hay ninguna respuesta que en realidad parezca funcionar.

+2

¿http://stackoverflow.com/questions/255202/how-do-i-view-git-diff-output-with-visual-diff-program/949242#949242 o http://stackoverflow.com/ preguntas/1881594/use-winmerge-inside-of-git-to-file-diff/1884517 # 1884517 ayuda? – VonC

+1

Echa un vistazo a mi respuesta para encontrar la solución más fácil de usar y hacer clic –

Respuesta

43

general
El siguiente es obtener instrucciones sobre cómo configurar GIT de control de versiones para que pueda usar un mejor conjunto de herramientas de la instalación por defecto. La configuración requiere que GIT Extensions ya esté instalado e implica la configuración de Winmerge en las extensiones de GIT.

instalación
colmadas todas las instrucciones e instalar en el directorio por defecto para Winmerge.

Configurar Winmerge en el TGI de control de versiones
Abrir un nuevo documento en un editor de texto. Copie y pegue lo siguiente y guarde el documento como "wMerge.sh" en su directorio "C: \ Archivos de programa (x86) \ Git \ bin \".

echo Launching WinMerge: $1 $2 "C:/Program Files (x86)/WinMerge/WinMergeU.exe" -e -u -dl "Original" -dr "Modified" "$1" "$2" 

Vaya a su directorio "Users-> username" y ubique el archivo .gitconfig. Abrirlo en su editor favorito copia/pega el código siguiente y guarde:

[user] 
    name = enter your name 
    email = [email protected] 
[core] 
    autocrlf = false 
[merge] 
    tool = winmerge 
[mergetool "winmerge"] 
    cmd = wMerge.sh \"$MERGED\" \"$REMOTE\" 
    path = c:/Program Files (x86)/winmerge/winmergeu.exe 
[mergetool] 
    keepBackup = false 
    trustExitCode = false 
[diff] 
    guitool = winmerge 
[difftool "winmerge"] 
    path = c:/Program Files (x86)/winmerge/winmergeu.exe 
    cmd = \"c:/Program Files (x86)/winmerge/winmergeu.exe\" \"$LOCAL\" \"$REMOTE\" 

Run "GitExtensions", ir a "Herramientas> Configuración> Git extensiones-> Git Config". Si ha realizado su instalación correctamente y ha referenciado las herramientas a su directorio, su página de configuración global debe verse como a continuación (NOTA: Complete su nombre por nombre y correo electrónico):

mergetool: winmerge
ruta a mergetool: comando c:/Program Files (x86)/winmerge/winmergeu.exe
mergetool: wMerge.sh "$MERGED" "$REMOTE"
difftool: winmerge
camino hacia difftool: c:/Program Files (x86)/winmerge/winmergeu.exe
comando difftool: "c:/Program Files (x86)/winmerge/winmergeu.exe" "$LOCAL" "$REMOTE"

finales de línea: la caja como está, cometer tal cual

Navega a la pestaña de la lista de verificación para verificar que GIT esté todo "verde" y satisfecho con tu configuración.

+0

me encantó la forma en que mencionas todo claramente – Kiarash

+0

Coloqué wMerge.sh en/Git/bin/pero obtengo esto:/mingw64/libexec/git-core/git-mergetool-lib: línea 133: wMerge.sh: comando no encontrado –

8

@ respuesta de Sebastiaan no funcionaba para mí (tal vez es obsoleta?)

Estos son los "ajustes globales" que trabajan para mí usando GitExtensions 2.28:

mergetool: winmerge
Path a mergetool : D:/path/to/WinMerge/WinMergeU.exe
Comando Mergetool: "D:/path/to/WinMerge/WinMergeU.exe" -e "$MERGED"
Esto hace que WinMerge use el "archivo de conflicto" generado por git.
-e permite presionar ESC para cerrar winmerge.

Difftool: winmerge
Camino a difftool: D:/path/to/WinMerge/WinMergeU.exe
comando Difftool: "D:/path/to/WinMerge/WinMergeU.exe" -e "$LOCAL" "$REMOTE" -dl "Local" -dr "Remote"
-dl y -dr establece las descripciones para el panel de la izquierda y la derecha.

+0

esto funcionó para mí – ranthonissen

+0

Esta es la respuesta correcta ... el problema para mí fue que la configuración predeterminada de GitExtensions para WinMerge no incluía "-dl" Local "-dr" Remoto "". ¡Gracias! –

3

agregar o cambiar lo siguiente en el fichero de configuración:

[merge] 
    tool = winmerge 
[mergetool "winmerge"] 
    cmd = $PROGRAMFILES/WinMerge/WinMergeU.exe "$PWD/$MERGED" 

Esta solución es distinta de dos maneras:

  1. simplemente llama WinMergeU.exe *conflictfile*, mientras que las llamadas de dos caras sufren del hecho de que la ventana de la izquierda presenta <<<<<<<, ======= y >>>>>>> marcadores que contiene $ MERGED.
  2. Aplicar mergetool en base a recórpido: estoy editando el archivo $ GIT_DIR/config. Se puede obtener el mismo resultado llamando a git config sin --system o --global argument. Esto es para notar que hay a few scopes of configuration to choose from.

La variable $ PROGRAMFILES es mantenida por git bash y (a diferencia de la variable similar en windows nativo cmd) navega a "Archivos de programa (x86)".

+0

No creo que se requiera $ PWD aquí. Esta respuesta funciona bien para mí sin eso. – robertpateii

10

En Windows 7, esto es lo que finalmente funcionó para mí. Tenga en cuenta las cotizaciones "'c:/path/here'" en la ruta de mis archivos de programa.

[merge] 
    tool = winmerge 
[mergetool "winmerge"] 
    cmd = "'C:/Program Files (x86)/WinMerge/WinMergeU.exe'" -e "$MERGED" 
[diff] 
    tool = winmerge 
[difftool "winmerge"] 
    cmd = "'C:/Program Files (x86)/WinMerge/WinMergeU.exe'" -e "$LOCAL" "$REMOTE" -dl "Local" -dr 
+0

Esto funcionó para mí también en Windows 7. Gracias :) –

+0

Esto resolvió mi problema para Windows 10 y Visual Studio 2015. ¡Gracias! –

17

en extensiones Git v2.47.3, es muy fácil de configurar esto:

Configuración -> Configuración general -> en la lista desplegable para escribir 'mergetool' manualmente: WinMerge y ver el milagro .

Lo mismo para el menú desplegable 'Difusor'.

enter image description here

|| || || 
\/ \/ \/ 

enter image description here

Es una tontería que la opción 'WinMerge' no está rellenada previamente en el menú desplegable. Oh bien.

+3

Este me ha funcionado como un encanto :) –

+1

Es la solución más fácil :) –

Cuestiones relacionadas