Gitx有一个很棒的差异查看器,如何让git自动将git diff 任何导入gitx?
我试图将git config diff.external设置为如下所示的shell脚本:
git diff "$2" "$5" | gitx
然而,这只会将所有单个文件打开到多个gitx窗口中,并且它实际上会混淆文件名(将它们全部更改为带有疯狂名称的tmp文件)。
有没有人有更好的解决方案?
答案 0 :(得分:18)
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以外的地方打开差异视图有关。