【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
当我输入git diff
,我想使用我选择的可视化diff工具(在Windows上为SourceGear“ diffmerge”)查看输出。 如何配置git来做到这一点?
#1楼
使用新的git difftool ,就像将它添加到.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
#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"
#3楼
我已经在~/.gitconfig
使用了很长时间:
[diff]
external = ~/Dropbox/source/bash/git-meld
使用git-meld
:
#!/bin/bash
if [ "$DISPLAY" = "" ];
then
diff $2 $5
else
meld $2 $5
fi
但是现在我厌倦了总是在图形化环境中使用meld的方法,并且用这种设置调用普通的diff并不容易,所以我切换到了这个:
[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
。
#4楼
我在这里尝试了花哨的东西(与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
#5楼
您可以使用git difftool
。
例如,如果您有meld ,则可以通过以下方式编辑分支master
和devel
:
git config --global diff.external meld
git difftool master..devel
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3145784