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


当前回答

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

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

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

其他回答

尝试此解决方案:

$ meld my_project_using_git

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

对于如何在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"

如果你恰好已经有一个与文件类型相关的diff工具(比如,因为你安装了TortoiseSVN,它附带了一个diff查看器),你可以将常规的git diff输出通过管道发送到一个“temp”文件,然后直接打开该文件,而无需了解查看器:

git diff > "~/temp.diff" && start "~/temp.diff"

将其设置为全局别名效果更好:gitwhat

[alias]
    what = "!f() { git diff > "~/temp.diff" && start "~/temp.diff"; }; f"

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

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

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

使用新的gitdifftool,只需将其添加到.gitconfig文件中即可:

[diff]
    tool = any-name
[difftool "any-name"]
    cmd = "\"C:/path/to/my/ext/diff.exe\" \"$LOCAL\" \"$REMOTE\""

也可以选择添加:

[difftool]
    prompt = false

还可以查看diffall,这是我编写的一个简单脚本,用于扩展串行打开每个文件的烦人(IMO)默认diff行为。

Windows上的全局.gitconfig位于%USERPROFILE%\.gitconfig中