tipos tag tab etiquetas delete crear commits windows git user-interface mergetool tortoisemerge

windows - tag - git versioning



¿Por qué no puedo usar TortoiseMerge como mi herramienta de combinación git en Windows? (5)

Estoy intentando realizar mi primera fusión de Git (¡emocionante!), Pero no puedo obtener Git Gui (0.13.GITGUI desde Git 1.7.4.msysgit.0) para reconocer TortoiseMerge (1.6.11.20210 x64) en Windows 7. En función de una respuesta a una pregunta similar , realicé los siguientes cambios de configuración:

$ git config --global merge.tool tortoisemerge $ git config --global mergetool.tortoisemerge.cmd ''TortoiseMerge.exe -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"'' $ git config --global --list ...snip... merge.tool=tortoisemerge mergetool.tortoisemerge.cmd=TortoiseMerge.exe -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED" $

Desafortunadamente, cuando inicio Git Gui e intento ejecutar "Run Merge Tool", recibo el error Unsupported merge tool ''tortoisemerge'' .

¿Alguien puede decirme qué he hecho mal? Aquí están las secciones relevantes de mi ~/.gitconfig :

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

Actualizar

TortoiseMerge funciona bien con la configuración anterior cuando se ejecuta git mergetool desde la línea de comandos. Parece que solo Git Gui tiene problemas con eso. : - /


Este problema parece resuelto en el último git (tengo git version 1.9.4.msysgit.1 ).

C:/git/build>git mergetool This message is displayed because ''merge.tool'' is not configured. See ''git mergetool --tool-help'' or ''git help config'' for more details. ''git mergetool'' will now attempt to use one of the following tools: tortoisemerge emerge vimdiff C:/git/build>git config merge.tool tortoisemerge C:/git/build>git mergetool No files need merging


Intente escribir TortoiseMerge.exe desde la línea de comandos para asegurarse de que esté en la ruta. Si no, agréguelo a través de Mi PC> Propiedades> Avanzado> Variables de entorno> Variables del sistema: ruta.

Luego, desde el símbolo del sistema, configúrelo mediante los siguientes comandos

git config --replace --global diff.tool tortoisemerge git config --replace --global difftool.diffmerge.cmd "TortoiseMerge.exe -base:/"$BASE/" -theirs:/"$REMOTE/" -mine:/"$LOCAL/" -merged:/"$MERGED/"" git config --replace --global difftool.prompt false

Para usarlo desde el símbolo del sistema, escriba git difftool desde dentro del directorio de trabajo de git.

Muestra los archivos de uno en uno, por lo que es mejor instalar TortoiseGit, lo que facilita el manejo de los archivos, incluso si solo se trata de la parte diff.


Para el caso en el que estaba trabajando, el mergetool ya estaba configurado para tortoisemerge, pero no pudo encontrarlo.

Proporcionar una ubicación totalmente calificada trabajó en Windows:

git config --global mergetool.tortoisemerge.cmd "/"C://Program Files//TortoiseGit//bin//TortoiseGitMerge.exe/" -base:/"$BASE/" -mine:/"$LOCAL/" -theirs:/"$REMOTE/" -merged:/"$MERGED/""



Si tienes el último git, ejecuta esta línea de comando una vez:

git config merge.tool tortoisemerge

Importante: No agregue una extensión .exe al comando.

Si eso falla, o si desea agregar una herramienta de fusión diferente que git no conoce, haga esto:

Abra uno de los siguientes en un editor:

  • C:/Program Files/Git/mingw64/share/git-gui/lib/mergetool.tcl 64 bits: C:/Program Files/Git/mingw64/share/git-gui/lib/mergetool.tcl
  • C:/Program Files (x86)/Git/share/git-gui/lib/mergetool.tcl 32 bits: C:/Program Files (x86)/Git/share/git-gui/lib/mergetool.tcl

Agregue algo como esto a mergetool.tcl:

tortoisemerge { set cmdline [list TortoiseMerge.exe -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"] }

Coloque la nueva entrada de tortoisemerge encima de este otro código:

default { error_popup [mc "Unsupported merge tool ''%s''" $tool] return }

Ejemplo de bonificación:

Para usar la diffmerge de SourceGear, agréguela a mergetool.tcl:

diffmerge { set cmdline [list "C:/Program Files (x86)/SourceGear/DiffMerge/DiffMerge.exe" --merge --result=$MERGED $LOCAL $BASE $REMOTE] }