2011-03-04 16 views
44

Próbuję wykonać moje pierwsze połączenie Git kiedykolwiek (ekscytujące!), Ale nie mogę uzyskać Git Gui (0.13.GITGUI od Git 1.7.4.msysgit.0), aby rozpoznać TortoiseMerge (1.6.11.20210 x64) w systemie Windows 7. na podstawie an answer to a similar question, zrobiłem następujące zmiany konfiguracji:Dlaczego nie mogę używać TortoiseMerge jako narzędzia git merge w systemie 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" 
$ 

Niestety, kiedy zacznę Git GUI i próbować "Run Merge Tool", otrzymuję błąd Unsupported merge tool 'tortoisemerge'.

Czy ktoś może mi powiedzieć, co zrobiłem źle? Oto stosowne fragmenty moich ~/.gitconfig:

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

Aktualizacja

TortoiseMerge współpracuje z powyższej konfiguracji, gdy uruchomiony git mergetool z wiersza poleceń. Wygląda na to, że tylko Git Gui ma z tym problemy. : -/

+0

Czy na twojej ścieżce znajduje się 'TortoiseMerge.exe'? Czy próbowałeś podać pełną ścieżkę? –

+0

@Ben - Rzeczywiście znajduje się na mojej ścieżce, a podanie pełnej ścieżki nie wydaje się mieć żadnego wpływu. : -/ –

+0

Czy masz jakieś miejsce w plikach, które chcesz scalić? – VonC

Odpowiedz

52

UPDATE:

Oryginalny odpowiedź jest już nieaktualne.

Jeśli masz najnowszą git po prostu zrobić jednorazowy git config merge.tool tortoisemerge

Ważne: nie należy dodawać .exe rozszerzenie do polecenia.

=== oryginalna odpowiedź (teraz przestarzały) ===

nie mam TortoiseMerge zainstalowany, więc nie mogę sprawdzić, ale jestem prawie pewien, że problemem jest to, który używa git gui plik o nazwie C: \ Program Files (x86) \ Git \ share \ git-gui \ lib \ mergetool.tcl do definiowania każdego narzędzia do scalania, z którym działa, i pokazuje, że narzędzie "Nieobsługiwane narzędzie scalania" dla narzędzi scalania zdefiniowanych w. gitconfig, które nie pasują do tych zdefiniowanych w mergetool.tcl.

Aby to działało, powinieneś móc dodać coś takiego do mergetool.TCL:

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

umieścić nowy wpis TortoiseMerge powyżej tego innego kodu:

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

Cóż, będę cholernie Dwa lata i wreszcie dostaliśmy rozwiązanie dla tego! –

+0

Mam najnowszą instalację git-for-windows 2.12.2 w oknach 64-bitowych, ale plik tortoisegitmerge.exe nie znajduje się w PATH, więc zarówno zaktualizowana odpowiedź i przestarzała odpowiedź nie działają. Oba zgłaszane: Nieobsługiwane narzędzie scalania "tortoisemerge". Podczas gdy mój tortoisegit jest instalowany w "E: \ Program Files \ TortoiseGit \ bin \ TortoiseGitMerge.exe". Jakieś pomysły? Dzięki. – ollydbg23

+0

Idealnie komentarz. Działają bardzo dobrze! –

17

Spróbuj tego:

[merge] 
tool = tortoise 

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

Źródło: http://programmersunlimited.wordpress.com/2010/07/01/getting-git-to-use-tortoisemerge/

+1

Ten sam problem, obawiam się. (Chociaż teraz błąd to oczywiście "nie obsługiwane narzędzie").) –

+7

Musiałam wstawić pełną ścieżkę i uciec podwójne cudzysłowy: 'cmd = \" "c :/Program Files/TortoiseSVN/bin/TortoiseMerge.exe "\" -base: "$ BASE" -theirs: "$ REMOTE" -mine: "$ LOCAL" -wzbudzone: "$ MERGED" ' – lkuty

+1

Miałem problem z pliki, które mają spacje w swoich nazwach i ta składnia może rozwiązać problem: 'cmd = \" "c:/Program Files/TortoiseGIT/bin/TortoiseGitMerge.exe" \ "-mini \" $ REMOTE \ "-base \ "$ LOCAL \" 'Działa to dla TortoiseGitMerge, a nie TortoiseMerge – Kai

2

spróbuj wpisać TortoiseMerge.exe z wiersza polecenia, aby upewnić się, że jest w drodze. Jeśli nie, dodaj go przez Mój komputer> Właściwości> Zaawansowane> Zmienne środowiskowe> Zmienne systemowe: Ścieżka.

Następnie z wiersza polecenia skonfigurować go za pomocą poniższych poleceń

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 

Aby go użyć w wierszu polecenia wpisz git difftool od kartę w ciągu swojego katalogu roboczego git.

Pokazuje pliki pojedynczo, więc nadal lepiej jest instalować TortoiseGit, co ułatwia obsługę, nawet jeśli jest to tylko część diff.

+0

Jak mogę otworzyć narzędzie oparte na GUI, aby scalić wszystkie pliki konfliktów z Git cmd? – Master

4

dla przypadku, że pracuję dalej, mergetool został już ustawiony na TortoiseMerge, ale nie mógł go znaleźć.

Zapewniając pełną lokalizację pracował w systemie Windows:

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

Ten problem pojawia rozwiązany w najnowszej git (mam 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