2009-04-10 212 views
13

Gitx有一个很好的差异查看器,我该如何让Git自动将git diff 任何转换成gitx?如何使git diff在OS X上使用gitx --diff

我试着混帐配置diff.external设置为一个shell脚本,看起来像这样:

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

然而,只有打开所有个人文件分成多个gitx窗口,它确实混乱提取文件名(将它们全部更改为具有疯狂名称的tmp文件)。

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

回答

3

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

opendiff $2 $5 
+0

+1为opendiff,但我只是用它来查看差异,而不是编辑。 – claf 2009-04-12 09:11:38

1

我问了一个similar question回来。这个答案可能对你有帮助。这里有几个问题,但其中一个与在FileMerge之外的其他位置打开diff视图有关。

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" 

此重定向所有的2路和3-窗口方式通过合并Araxis。似乎“路径=”不应该是必要的,但它起作用。

祝你好运。

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的差异无所谓”应该打开FileMerge.app ...

+5

opendiff“$ 2”“$ 5”-merge“$ 5” 适用于在其中有空格的路径。 ⌘-s将更改从FileMerge保存回本地文件。 – 2011-04-10 02:29:05

+0

我将如何撤销这个改变(如果说,我厌倦了opendiff并想回到内联diff工具)? – thewillcole 2012-02-14 01:10:45

5

我不太确定这是你想要什么,但对我们在Mac上可以肯定的是反正方便,有点关系,你可能会想尝试:

$ git的difftool -t了opendiff #hash

打开在了opendiff程序的差异,我觉得非常有用

。这比创建shell脚本和通过新的外部差异强制所有差异更容易。如果您不在Mac上,您可以将opendiff更改为您最喜欢的可用差异工具...

2

我使用这个脚本,我有一个名为git-diffx并把我的路径:

#!/bin/bash 

result=$(git diff [email protected]) 

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

代替git diff ...然后,你叫git diffx ...

2

这个问题可能有点旧,但我只是找到了适合我的东西。

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

在终端管DIFF经由到gitx:

git的差异| gitx