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


当前回答

从Git 1.6.3版开始,有了“gitdifftool”,您可以将其配置为使用您最喜欢的图形diff工具。

目前(在撰写此答案时)开箱即用支持KDiff3、Kompare、tkdiff、Meld、xxdiff、emerge、vimdiff、gvimdiff、ecmerge、Diffuse和opendiff;如果您要使用的工具不在此列表中,您可以始终使用difftool<tool>.cmd'配置选项。

“gitdifftool”接受与“gitdiff”相同的选项。

其他回答

对于如何在1.6.3之前的Git版本上配置diff工具的Linux版本(1.6.3向Git添加了difftool),这是一个非常简洁的教程。

简而言之:

步骤1:将其添加到.gitconfig中

[diff]
  external = git_diff_wrapper
[pager]
  diff =

步骤2:创建一个名为git_diff_wrapper的文件,将其放在$PATH中的某个位置

#!/bin/sh

vimdiff "$2" "$5"

安装Meld:

 # apt-get install meld

然后选择它作为difftool:

 $ git config --global diff.tool meld

如果要在控制台中运行,请键入:

 $ git difftool

如果要使用图形模式,请键入:

 $ git mergetool

结果将是:

 'git mergetool' will now attempt to use one of the following tools:
 meld opendiff kdiff3 tkdiff xxdiff tortoisemerge gvimdiff diffuse
 diffmerge ecmerge p4merge araxis bc3 codecompare emerge vimdiff
 Merging:
 www/css/style.css
 www/js/controllers.js

 Normal merge conflict for 'www/css/style.css':
   {local}: modified file
   {remote}: modified file
 Hit return to start merge resolution tool (meld):

所以只需按Enter键即可使用meld(默认)。这将打开图形模式。进行神奇的保存并按下以解决合并。这就是全部。

如果你在Mac上,并且有Xcode,那么你已经安装了FileMerge。终端命令是opendiff,因此您可以执行以下操作:

git difftool -t opendiff

这在Windows 7上适用。不需要中间sh脚本

.gitconfig的内容:

    [diff]
      tool = kdiff3

    [difftool]
       prompt = false

    [difftool "kdiff3"]
      path = C:/Program Files (x86)/KDiff3/kdiff3.exe
      cmd = "$LOCAL" "$REMOTE"

您可能想尝试xd,它是Git/SVNdiff的GUI包装器。它本身不是diff工具。

当你想运行git diff或svn diff时,你可以运行xd,它会向你显示一个文件列表,一个预览窗口,你可以启动任何你喜欢的diff工具,包括tkdiff、xxdiff、gvimdiff、Emacs(ediff)、XEmacs(diff)、Meld、Diffuse、Kompare和KDiff3。您也可以运行任何自定义工具。

不幸的是,该工具不支持Windows。

披露:我是这个工具的作者。