当我输入git diff
,我想使用我选择的可视化diff工具(在Windows上为SourceGear“ diffmerge”)查看输出。 如何配置git来作到这一点? linux
使用新的git difftool ,就像将它添加到.gitconfig文件中同样简单: git
[diff] tool = any-name [difftool "any-name"] cmd = "\"C:/path/to/my/ext/diff.exe\" \"$LOCAL\" \"$REMOTE\""
(可选)还添加: vim
[difftool] prompt = false
还要查看diffall ,这是我编写的一个简单脚本,用于扩展烦人的(IMO)默认状况下以串行方式打开每一个文件的diff行为。 bash
Windows上的全局.gitconfig位于%USERPROFILE%\\.gitconfig
app
对于如何在1.6.3以前的git版本上配置diff工具的linux版本(1.6.3在git中添加了difftool), 这是一个很是简洁的教程, 工具
简单来讲: spa
步骤1:将其添加到您的.gitconfig code
[diff] external = git_diff_wrapper [pager] diff =
第2步:建立一个名为git_diff_wrapper的文件,并将其放在$ PATH中 教程
#!/bin/sh vimdiff "$2" "$5"
我已经在~/.gitconfig
使用了很长时间: get
[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
。
我在这里尝试了花哨的东西(与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
您可使用git difftool
。
例如,若是您有meld ,则能够经过如下方式编辑分支master
和devel
:
git config --global diff.external meld git difftool master..devel