當我輸入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