你如何在OS X上使用git diff使用gitx --diff

时间:2009-04-10 06:56:13

标签: git macos diff

Gitx有一个很棒的差异查看器,如何让git自动将git diff 任何导入gitx?

我试图将git config diff.external设置为如下所示的shell脚本:

git diff "$2" "$5" | gitx

然而,这只会将所有单个文件打开到多个gitx窗口中,并且它实际上会混淆文件名(将它们全部更改为带有疯狂名称的tmp文件)。

有没有人有更好的解决方案?

7 个答案:

答案 0 :(得分:18)

像sigjuice在那里说的那样。只有那个noobs(就像我现在)需要知道如何“连接”git来使用它。这就是我做的事情

echo 'opendiff $2 $5' > ~/opendiff-git.sh
chmod a+x ~/opendiff-git.sh
git config --global diff.external ~/opendiff-git.sh 

现在所有“git diff whatever”应该打开FileMerge.app ...

答案 1 :(得分:5)

我不太确定这是你想要的,但对于Mac上的我们来说它确实很方便而且有点相关,你可能想尝试一下:

$ git difftool -t opendiff #hash

这打开了opendiff程序中的差异,我发现它非常有用。这比创建shell脚本和强制所有差异通过新的外部差异要容易得多。如果您不在Mac上,您可以将opendiff更改为您最喜欢的可用差异工具......

答案 2 :(得分:3)

对不起,这并没有真正回答你关于gitx的问题。我甚至不确定gitx是否可以作为通用的差异工具。您可能喜欢FileMerge,Xcode安装中包含的合并/差异工具。有一个名为opendiff的脚本可以为您启动它。只需创建一个脚本,其中包含以下行,并指向diff.external。

opendiff $2 $5

答案 3 :(得分:2)

我为Araxis合并做了这个,但修改这些基本指令对于你所提供的工具来说应该不难。

首先我创建了〜/ bin / git-diff-driver.sh并为文件添加了执行权限。


#!/bin/sh

/usr/local/bin/compare -title1:"$1 (repo version)" -title2:"$1 " -max "$2" "$5"

Araxis在/ usr / local / bin中安装了它的命令行界面工具比较工具是他们的通用工具,araxis *工具通过比较提供。

设置完成后,需要将以下行添加到〜/ .gitconfig


[merge]
    tool = araxismerge
[mergetool "araxismerge"]
    cmd = "/usr/local/bin/compare -3 -merge -wait $LOCAL $BASE $REMOTE $MERGED"
    path = /usr/local/bin/
[diff]
    external = "/Users/mark/bin/git-diff-driver.sh"

这会通过Araxis Merge重定向所有双向和三向差异。似乎“path =”似乎不是必需的,但它确实有效。

祝你好运。

答案 4 :(得分:2)

我正在使用这个名为git-diffx的脚本并放入我的路径:

#!/bin/bash

result=$(git diff $@)

if [ "$result" ]; then
   echo "$result" | gitx
fi

然后,您拨打git diff ...,而不是git diffx ...

答案 5 :(得分:2)

这个问题可能有点旧,但我发现了一些适合我的东西。

打开GitX应用程序(第7版),选择“GitX”菜单,然后选择“启用终端使用”

在终端管道差异到gitx通过:

git diff | gitx

答案 6 :(得分:1)

我问了similar question一会儿。这个答案可能对你有帮助。这里有几个问题,但其中一个问题与在FileMerge以外的地方打开差异视图有关。