2011-03-04 15 views
44

我試圖執行我的第一個Git合併(令人興奮!),但無法在Windows上識別Git Gui(Git 1.7.4.msysgit.0中的0.13.GITGUI)以識別TortoiseMerge(1.6.11.20210 x64) 7.根據an answer to a similar question,我做了以下配置更改:爲什麼我不能在Windows上使用TortoiseMerge作爲我的git合併工具?

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

不幸的是,當我開始混帳桂,並試圖「運行合併工具」,我收到錯誤Unsupported merge tool 'tortoisemerge'

任何人都可以告訴我我做錯了什麼嗎?下面是我的~/.gitconfig相關章節:

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

更新在命令行中運行git mergetool

TortoiseMerge能正常工作與上面的配置。看來只有Git Gui有問題。 : -/

+0

TortoiseMerge.exe是否在你的路徑中?你有沒有試過指定完整路徑? –

+0

@Ben - 確實在我的路徑中,指定完整路徑似乎沒有任何影響。 : -/ –

+0

你想要合併的文件中有空間嗎? – VonC

回答

52

UPDATE

原來的答案是現在已經過時。

如果您有最新的git只是做一個一次性git config merge.tool tortoisemerge

重要:不添加.exe擴展命令。

===原來的答覆(現在已經過時)===

我沒有做的TortoiseMerge安裝,所以我不能對此進行測試,但我敢肯定,問題是混帳GUI使用一個名爲C:\ Program Files(x86)\ Git \ share \ git-gui \ lib \ mergetool.tcl的文件來定義它所使用的每個合併工具,並且它顯示了定義在其中的合併工具的「不支持的合併工具」錯誤。 gitconfig不符合mergetool.tcl中定義的之一。

所以,要使它工作,你應該能夠添加這樣的東西到mergetool。TCL:

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

將新的TortoiseMerge項高於這個其他代碼:

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

呃,我會很生氣的。兩年後,我們終於得到了一個解決方案這個! –

+0

我有laitted git-for-windows 2.12.2安裝在64位窗口,但tortoisegitmerge.exe不在PATH中,所以更新的答案和過時的答案不起作用。兩者都報告:不支持的合併工具'tortoisemerge'。而我的tortoisegit安裝在'E:\ Program Files \ TortoiseGit \ bin \ TortoiseGitMerge.exe'中。那麼,有什麼想法?謝謝。 – ollydbg23

+0

完美評論。工作得很好! –

17

試試這個:

[merge] 
tool = tortoise 

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

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

+1

同樣的問題,恐怕(雖然現在錯誤是'Unsupported merge tool'tortoise'',當然。) –

+7

只好把完整路徑和轉義雙引號括起來:'cmd = \「」c :/ Program Files/TortoiseSVN/bin/TortoiseMerge.exe「\」-base:「$ BASE」-theirs:「$ REMOTE」-mine:「$ LOCAL」-merged:「$ MERGED」 – lkuty

+1

我遇到了問題這個語法可以解決問題:'cmd = \「」c:/ Program Files/TortoiseGIT/bin/TortoiseGitMerge.exe「\」-mine \「$ REMOTE \」-base \ 「$ LOCAL \」'。這適用於TortoiseGitMerge,而不是TortoiseMerge – Kai

2

嘗試在命令行中鍵入TortoiseMerge.exe以確保它在路徑。如果不通過「我的電腦」>「屬性」>「高級」>「環境變量」>「系統變量:路徑」添加它。

然後從命令提示符通過以下命令

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 

其配置爲從命令提示符下,鍵入git difftool從您的git的工作目錄中使用它。

它一次顯示一個文件,所以你最好安裝TortoiseGit,這使得事情更容易處理,即使只是爲了diff部分。

+0

如何打開基於GUI的工具來合併來自Git cmd的所有衝突文件? – Master

4

對於我工作的情況下,合併工具已經被設置爲TortoiseMerge中,但它無法找到它。

提供了一個完全合格的位置,工作在Windows:

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

這個問題在最新出現的git解決(我有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 
相關問題