Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让git-diff在OSX上使用gitx--diff_Git_Macos_Diff - Fatal编程技术网

如何让git-diff在OSX上使用gitx--diff

如何让git-diff在OSX上使用gitx--diff,git,macos,diff,Git,Macos,Diff,Gitx有一个很好的差异查看器,如何让git自动将git差异导入Gitx 我尝试将git config diff.external设置为如下所示的shell脚本: git diff "$2" "$5" | gitx 然而,这只会将所有单独的文件打开到多个gitx窗口中,而且会真正弄乱文件名,将它们全部更改为具有疯狂名称的tmp文件 有谁有更好的解决方案吗?很抱歉,这并不能真正回答您关于gitx的问题。我甚至不确定gitx是否可以作为一个通用的diff工具。您可能喜欢FileMerge,这是Xc

Gitx有一个很好的差异查看器,如何让git自动将git差异导入Gitx

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

git diff "$2" "$5" | gitx
然而,这只会将所有单独的文件打开到多个gitx窗口中,而且会真正弄乱文件名,将它们全部更改为具有疯狂名称的tmp文件


有谁有更好的解决方案吗?

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

opendiff $2 $5

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

我是为Araxis merge做的,但是修改这些基本说明对于您所使用的任何工具都不难

首先,我创建了~/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=不应该是必需的,但它可以工作


祝你好运。

就像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都应该打开FileMerge.app…

我不太确定这是您想要的,但对于我们的Mac电脑来说,它确实很方便,而且有些关联,您可能想尝试:

$git difftool-t opendiff散列


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

我正在使用这个脚本,我将它命名为git diffx并放在我的路径中:

#!/bin/bash

result=$(git diff $@)

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

然后,不是git diff…,而是git diffx…

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

打开GitxAppv.7,选择GitX菜单,然后启用终端使用

在终端管道上,通过以下方式与gitx相区别:


git diff | gitx

使“git difftool…”看起来您无法-将opendiff更改为您最喜欢的可用diff工具…,-t mysupertool导致未知的合并工具“mysupertool”opendiff$2$5-merge$5适用于其中包含空格的路径。⌘-s将更改从FileMerge保存回本地文件。如果我厌倦了opendiff并想返回内联diff工具,我该如何撤消此更改?@Will-Cole:git-config-global-unset-diff.externalgitx是一个很好的通用diff工具