当我键入git diff
命令时,我希望使用我选择的可视化差异工具(Windows上的SourceGear "diffmerge")查看输出。如何配置git以实现这一点?
当我键入git diff
命令时,我希望使用我选择的可视化差异工具(Windows上的SourceGear "diffmerge")查看输出。如何配置git以实现这一点?
我尝试了一些花哨的东西(使用tkdiff),但对我没有用。所以我写了下面这个脚本,名为tkgitdiff。它可以做到我需要的功能。
$ cat tkgitdiff
#!/bin/sh
#
# tkdiff for git.
# Gives you the diff between HEAD and the current state of your file.
#
newfile=$1
git diff HEAD -- $newfile > /tmp/patch.dat
cp $newfile /tmp
savedPWD=$PWD
cd /tmp
patch -R $newfile < patch.dat
cd $savedPWD
tkdiff /tmp/$newfile $newfile
我已经长时间在文件~/.gitconfig
中使用这个位:
[diff]
external = ~/Dropbox/source/bash/git-meld
git-meld
:#!/bin/bash
if [ "$DISPLAY" = "" ];
then
diff $2 $5
else
meld $2 $5
fi
但现在我厌倦了在图形界面中始终使用Meld,而且使用这种设置调用普通的差异不是一件简单的事情,所以我转而使用了这个:
[alias]
v = "!sh -c 'if [ $# -eq 0 ] ; then git difftool -y -t meld ; else git difftool -y $@ ; fi' -"
git v
git v --staged
git v -t kompare
git v --staged -t tkdiff
我仍然可以保留好用的旧版 git diff
。
如果您不喜欢使用命令行,那么如果您安装TortoiseGit,您可以右键单击文件以获取TortoiseGit子菜单,并选择“稍后比较”选项。
当您在第一个文件上选择此选项后,您可以右键单击第二个文件,转到TortoiseGit子菜单并选择“与==yourfilehere==比较”。 这将为结果提供TortoiseGit合并GUI。
如果您已经将差异工具与文件类型关联(例如,因为您安装了附带差异查看器的TortoiseSVN),则可以将常规的git diff
输出导入“temp”文件,然后直接打开该文件,而无需了解有关查看器的任何信息:
git diff > "~/temp.diff" && start "~/temp.diff"
git what
[alias]
what = "!f() { git diff > "~/temp.diff" && start "~/temp.diff"; }; f"
git difftool -tool=opendiff
命令并将opendiff
替换为任何其他工具。 - potenchgit config diff.tool winmerge
。通过输入git difftool
来验证它是否可用。通过输入git config --global difftool.prompt false
来取消提示。我建议使用 p4merge 而不是 winmerge。 - Michael S.