当我键入gitdiff时,我想用我选择的可视化diff工具(Windows上的SourceGear“diffmerge”)查看输出。如何配置git以执行此操作?
当前回答
你可以使用gitdifftool。
例如,如果您有Meld,可以通过以下方式编辑分支master和devel:
git config --global diff.external meld
git difftool master..devel
其他回答
使用新的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中
我还有一个补充。我喜欢经常使用不支持作为默认工具之一的diff应用程序(例如万花筒),通过
git difftool -t
我还希望将默认diff作为常规命令行,因此设置GIT_EXTERNAL_diff变量不是一个选项。
您可以使用以下命令一次性使用任意diff应用程序:
git difftool --extcmd=/usr/bin/ksdiff
它只将2个文件传递给您指定的命令,因此您可能也不需要包装器。
对于如何在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"
如果您通过Cygwin执行此操作,则可能需要使用cygpath:
$ git config difftool.bc3.cmd "git-diff-bcomp-wrapper.sh \$LOCAL \$REMOTE"
$ cat git-diff-bcomp-wrapper.sh
#!/bin/sh
"c:/Program Files (x86)/Beyond Compare 3/BComp.exe" `cygpath -w $1` `cygpath -w $2`
安装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(默认)。这将打开图形模式。进行神奇的保存并按下以解决合并。这就是全部。