2011-06-15 177 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