2011-06-15 178 views
7

我想使用opendiff作爲git diff的默認diff-tool。這曾經工作,但由於某種原因停止工作。 我使用的腳本:我不能讓git diff使用opendiff

echo opendiff $2 $5 > opendiff-git.sh 

這是在設定的.gitconfig:

[diff] 
external = ~/opendiff-git.sh 

這停止我最近的工作。哪裏不對?

更新: 當我克隆一個新的倉庫時,一切正常!奇怪!

+0

它是否報告了錯誤?或者只是給定一個固定的差異? – cxreg 2011-06-15 05:59:26

+0

不,它使用git diff時不報告錯誤,它只是在終端中打印diff。我也可以自己使用opendiff。 – Ida 2011-06-15 06:57:09

+0

我在Mac OS X中有完全相同的問題。在此之前,即使沒有設置此shell腳本,opendiff也能很好地工作。它停止工作後,我添加了腳本和diff.tool和diff.external選項,但它仍然不起作用。它並沒有給出錯誤,只是讓終端差異化。會發生什麼? – Petruza 2013-01-21 12:26:56

回答

2

我發現這個問題,而我試圖設置了opendiff作爲我的git的差異&合併工具。 奇怪的是,當我使用echo opendiff $ 2 $ 5> opendiff-git.sh創建腳本時,腳本沒有包含參數佔位符$ 2 $ 5我手動添加它們並開始工作!

此命令

echo opendiff $2 $5 > opendiff-git.sh 

導致在含有

opendiff 

我添加兩個參數佔位符$ 2 5 $手動

opendiff $2 $5 

所作的外殼腳本的可執行文件opendiff-git.sh如由knittl

012所建議
chmod +x ~/opendiff-git.sh 

它的工作原理!

+1

您必須在命令行或外殼程序中轉義'$'才能找到名稱爲'$ 2'和'$ 5'的變量,它們不存在,因此它們被替換爲空字符串。試着運行它:echo opendiff \ $ 2 \ $ 5>〜/ opendiff-git.sh – petrsnd 2012-09-14 21:44:23

2

確保您opendiff-git.sh文件已設置了可執行位:

chmod +x ~/opendiff-git.sh 
+0

可執行位已設置。 – Ida 2011-06-15 06:56:01

1

您現在可以使用git config指定一個默認工具。使用FileMerge,即opendiff,運行:

git config --global diff.tool opendiff 

如果您查看~/.gitconfig文件,你現在應該看到:

[diff] 
    tool = opendiff 

現在應該工作。

+1

在_macOS Sierra_和_git版本2.10.1(Apple Git-78)上不起作用_ _ – gr4nt3d 2017-03-08 11:14:41