2013-11-27 153 views
14

有沒有人有MeldGit一起工作Windows? 我想讓它工作,我沒有成功。Git在Windows上的差異和融合

我安裝了meld,當我從命令行調用它作爲參數的兩個文件時,它會很好地區分它們,所以meld安裝正確。但是我不能讓它與GitGit Diff)一起工作。我使用Git的版本git version 1.8.1.msysgit.1

我已經試過幾件事情: 我創建了一個shell腳本meld.sh

#!/bin/bash 
meld.exe "$2" "$5" 
echo $2 
echo $5 

,並從git的使用它:

[diff] 
    tool = meld 

[difftool "meld"] 
    cmd = \"D:\\meld.sh\" 

我試圖將其添加爲這樣的difftool:

[diff] 
    tool = meld 

[difftool "meld"] 
    cmd = \"C:\\Program Files (x86)\\Meld\\meld\\meld.exe\" 

或者像這樣:

[diff] 
    tool = meld 

[difftool "meld"] 
    cmd = '\"/c/Program Files (x86)/Meld/meld/meld.exe\" $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE --output=$PWD/$MERGED' 

但它確實似乎沒有工作。我也嘗試從我的shell腳本中回顯第二個($ 2)和第五個($ 5)參數,並且沒有輸出。

meld.exe %2 %5 

meld.exe %~2 %~5 

,但它確實沒有工作...有誰知道我怎麼能傳遞文件Git用途的兩個版本:我使用批處理腳本在幾個方面也嘗試過當差價爲Meld? 這是煩了......

回答

19

通常情況下,你可以找到在Windows類似this gist例如,meld.exe在被你PATH

git config --global merge.tool meld 
git config --global mergetool.meld.cmd 'meld.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"' 

git config --global diff.tool meld 
git config --global difftool.meld.cmd 'meld.exe \"$LOCAL\" \"$REMOTE\"' 

您可以在「Git mergetool with Meld on Windows」找到一個更強大的設置,但這個想法依然如此。


在評論OP報告:

For the difftool , your commands write the following configurations in .gitconfig :

[diff] 
    tool = meld 
[difftool "meld"] 
    cmd = meld.exe \\\"$LOCAL\\\" \\\"$REMOTE\\\" 

我把它們改成:

[diff] 
    tool = meld 
[difftool "meld"] 
    cmd = meld.exe $LOCAL $REMOTE 

and everything worked fine.

+0

我與你的方法,但它不能正常工作。主怎麼它看起來像:http://i.imgur.com/KIaVb04.png。如果您在理解的路徑,請讓我知道的任何問題,我躲在用戶名和文件名的一部分。 –

+0

管理,使'difftool'工作。有沒有跟你'mergetool'但chanses是仄將工作一樣。對於'difftool'你的命令寫去volgende配置in' .gitconfig': '[DIFF] \t工具=登錄 [difftool」符號 「] \t CMD = meld.exe \\\」 \\\ $ LOCAL 「\\\」 $ REMOTE \\\'' 我把它們改成: ' [DIFF] \t工具=登錄 [difftool 「符號」] \t CMD = meld.exe $ LOCAL $ REMOTE' 一切工作得很好。我將與'mergetool'稍後再試,但我會接受你的意見:) 謝謝! –

+1

@JasonSwartz很大。我已經包括在回答更多的可見性的評論。 – VonC

3

甚至更​​好,如果你對一個鎖定系統,其中與路徑蠢事是不允許的,或者你只是不想污染你的路徑空間,你可以把完整的路徑融合。我也更喜歡我的當前工作代碼副本顯示在左側,所以我交換了$ REMOTE和$ LOCAL參數。還要注意\到/的轉換,而不要讓轉義雙引號。

​​
0

對於Windows 7(甚至其他版本的Windows),在.gitconfig文件中添加這些行。

[DIFF]

工具=登錄

[合併]

tool = meld 

[difftool 「符號」]

path = C:/Program Files (x86)/Meld/meld/meld.exe 

[合併工具 「符號」]

path = C:/Program Files (x86)/Meld/meld/meld.exe 

請注意,有沒有必要有「」「的路徑,即使有空間,只是要記得使用前的SLA,而不是落後。

+0

它可以在Windows Server 2012 R2開箱即用。找到最簡單的解決方案。 – pperejon

1

我與你幾個變化或試圖與git config路徑設置無濟於事。因爲我想用狀態從混帳bash的控制檯窗口,幹了什麼工作是路徑導出到日誌目錄,重新啓動的bash shell和LO &看哪git difftool --tool-helpgit mergetool --tool-help現在herkennen狀態,我可以選擇它作爲我的首選工具。

的.profile

export PATH=/c/Program\ Files\ \(x86\)/Meld/:$PATH 

的.gitconfig

[merge] 
    tool = meld 
[diff] 
    tool = meld 
1

另一個提示用戶在右鍵單擊上下文菜單項「外部差別」調用從gitk(DIFF ):

上面的設置也許能對gitk的喜好騎,在這種情況下,改變工具gitk的「編輯」 - >「首選項」 - >「常規」 - >「外部差異」設置。