2011-03-04 10 views
44

Sto provando a eseguire il mio primo Git merge mai (eccitante!), Ma non riesco a ottenere Git Gui (0.13.GITGUI da Git 1.7.4.msysgit.0) per riconoscere TortoiseMerge (1.6.11.20210 x64) su Windows 7. sulla base di an answer to a similar question, ho fatto le seguenti modifiche di configurazione:Perché non posso utilizzare TortoiseMerge come strumento di unione di Git su Windows?

$ 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" 
$ 

Purtroppo, quando inizio Git Gui e tentativo di "Run strumento di unione", ricevo l'errore Unsupported merge tool 'tortoisemerge'.

Qualcuno può dirmi cosa ho fatto di sbagliato? Ecco le sezioni pertinenti della mia ~/.gitconfig:

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

Aggiornamento

TortoiseMerge funziona bene con la configurazione sopra durante l'esecuzione git mergetool dalla riga di comando. Sembra che solo Git Gui abbia problemi con esso. : -/

+0

È 'TortoiseMerge.exe' nel tuo percorso? Hai provato a specificare il percorso completo? –

+0

@ Ben - È davvero sulla mia strada, e specificare il percorso completo non sembra avere alcun effetto. : -/ –

+0

Hai spazio nei file che vuoi unire? – VonC

risposta

52

UPDATE:

La risposta originale è ormai obsoleto.

Se avete l'ultima git basta fare una sola volta git config merge.tool tortoisemerge

Importante: non aggiungere un .exe estensione al comando.

=== risposta originale (ormai superata) ===

Non ho TortoiseMerge installato quindi non posso provare questo, ma sono abbastanza sicuro che il problema è che usi git gui un file chiamato C: \ Programmi (x86) \ Git \ share \ git-gui \ lib \ mergetool.tcl per definire ogni strumento di unione con cui funziona e mostra che "Errore di fusione non supportato" per gli strumenti di unione definiti in. gitconfig che non corrisponde a uno di quelli definiti in mergetool.tcl.

Quindi, per farlo funzionare, dovresti essere in grado di aggiungere qualcosa di simile a mergetool.TCL:

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

Mettere la nuova voce TortoiseMerge di sopra di questo altro codice:

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

Beh, sarò dannato. Due anni e finalmente abbiamo un soluzione per questo! –

+0

Ho l'ultima versione di git-for-windows 2.12.2 su una finestra a 64 bit, ma il tortoisegitmerge.exe non si trova nel PERCORSO, quindi entrambi risposta aggiornata e la risposta obsoleta non funziona. Entrambi riportati: strumento di unione non supportato 'tortoisemerge'. Mentre, il mio tortoisegit è installato in 'E: \ Programmi \ TortoiseGit \ bin \ TortoiseGitMerge.exe'. Quindi, qualche idea? Grazie. – ollydbg23

+0

Perfettamente commento. Funziona molto bene! –

17

Prova questa:

[merge] 
tool = tortoise 

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

Fonte: http://programmersunlimited.wordpress.com/2010/07/01/getting-git-to-use-tortoisemerge/

+1

Lo stesso problema, temo. (Anche se ora l'errore è 'Strumento di unione non supportato 'tortoise'', ovviamente.) –

+7

Doveva mettere il percorso completo e sfuggire le doppie virgolette:' cmd = \ "" c :/Programmi/TortoiseSVN/bin/TortoiseMerge.exe "\" -base: "BASE $": "$ REMOTE" -mine: "$ LOCAL" -incorporato: "$ MERGED" ' – lkuty

+1

Ho avuto un problema con i file, che hanno spazi nei loro nomi e questa sintassi può risolvere il problema: 'cmd = \" "c:/Programmi/TortoiseGIT/bin/TortoiseGitMerge.exe" \ "-mine \" $ REMOTE \ "-base \ "$ LOCAL \" 'Questo funziona per TortoiseGitMerge, non TortoiseMerge – Kai

2

Provate a digitare TortoiseMerge.exe dalla riga di comando per assicurarsi che sia nel percorso. In caso contrario, aggiungerlo tramite Risorse del computer> Proprietà> Avanzate> Variabili di ambiente> Variabili di sistema: percorso.

Poi dal prompt dei comandi di configurazione tramite i seguenti comandi

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 

Per utilizzarlo dal prompt dei comandi digitare git difftool dal all'interno della vostra directory di lavoro git.

Mostra i file uno alla volta, quindi è ancora meglio installare TortoiseGit che rende le cose più facili da gestire, anche se solo per la parte diff.

+0

Come posso aprire lo strumento basato su GUI per unire tutti i file di conflitto da Git cmd? – Master

4

Per il caso che stavo lavorando, il mergetool era già impostato per TortoiseMerge, ma non poteva trovarlo.

Fornire un percorso completo ha lavorato in Windows:

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

Questo problema sembra risolto nel più recente git (ho 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