当我键入gitdiff时,我想用我选择的可视化diff工具(Windows上的SourceGear“diffmerge”)查看输出。如何配置git以执行此操作?


当前回答

我在Ubuntu上使用Kompare:

sudo apt-get install kompare

要比较两个分支:

git difftool -t kompare <my_branch> master

其他回答

在VonC解决文件删除和添加问题的基础上,使用以下命令和脚本:

git config --global diff.tool winmerge
git config --global difftool.winmerge.cmd "winmerge.sh \"$LOCAL\" \"$REMOTE\" \"$BASE\""
git config --global difftool.prompt false

这与将其放在全局文件.gitconfig:

[diff]
    tool = winmerge
[difftool "winmerge"]
    cmd = winmerge.bat "$LOCAL" "$REMOTE" "$BASE"
[difftool]
    prompt = false

然后将以下内容放入文件winmerge.sh中,该文件必须位于您的路径上:

#!/bin/sh
NULL="/dev/null"
if [ "$2" = "$NULL" ] ; then
    echo "removed: $3"
elif [ "$1" = "$NULL" ] ; then
    echo "added: $3"
else
    echo "changed: $3"
    "C:/Program Files (x86)/WinMerge/WinMergeU.exe" -e -ub -dl "Base" -dr "Mine" "$1" "$2"
fi

我还有一个补充。我喜欢经常使用不支持作为默认工具之一的diff应用程序(例如万花筒),通过

git difftool -t

我还希望将默认diff作为常规命令行,因此设置GIT_EXTERNAL_diff变量不是一个选项。

您可以使用以下命令一次性使用任意diff应用程序:

git difftool --extcmd=/usr/bin/ksdiff

它只将2个文件传递给您指定的命令,因此您可能也不需要包装器。

在Mac OS X上,

git difftool -t diffuse

在Git文件夹中为我做这项工作。要安装漫反射,可以使用端口-

sudo port install diffuse

尝试此解决方案:

$ meld my_project_using_git

Meld了解Git,并提供最近更改的导航。

以下内容可以从这里的其他答案中获得,但对我来说,这很难(信息太多),所以这里是tkdiff的“只需键入”答案:

git difftool --tool=tkdiff <path to the file to be diffed>

你可以用你最喜欢的diffing工具的可执行文件名来代替tkdiff。只要(例如tkdiff),(或您最喜欢的diffing工具)在您的PATH中,它就会启动。