轉載:
http://blog.csdn.net/yangzhongxuan/article/details/8286771
http://www.cherrot.com/2012/09/let-git-diff-merge-use-gui-tools-like-meld/
方案一
I think Meld is a good gui tool for git diff.
setp 1:Ubuntu install meld
sudo apt-get install meld
step 2:create a shell script named git_meld.sh
vim ~/bin/ngit-meld.sh
#!/bin/sh meld $2 $5
step 3: chang git_meld.sh permissions
chmod +x ~/bin/git_meld.sh
step 4: config git diff tool
git config --global diff.external ~/bin/git-meld.sh
方案二
搜了一下,抄來抄去的都不靠譜。抄的比較多的是這個方案:
然而這不符合我的需求。因為我不希望改變git diff的默認行為。實際上git提供了命令 git difftool 來完成這類工作,而且比引文中的方法更智能。因為meld只接受兩個參數,而git diff會傳遞7個參數,因此需要編寫個shell腳本轉換一下:
#!/bin/sh
meld $2 $5
保存為git-meld,加可執行權限,然后設置git:
git config –global diff.external /PATH/TO/YOUR/git-meld
這樣,以后git diff的時候就可以直接用meld察看了。
使用git difftool (git mergetool)
git difftool 和 git mergetool是專門提供給我們以用自己的工具進行diff和merge的命令。只要配置一下就可以使用了:
git config --global diff.tool meld #配置默認的difftool
git config --global merge.tool meld #配置默認的mergetool
然后輸入命令 git difftool HEAD HEAD^1 看看?
使用meld直接比較目錄
雖然使用git difftool已經基本滿足了我的需要,但還有個小問題:如果我要比較兩次提交之間的差異時,difftool只能一個文件一個文件的比較,每次都要提 示你是否打開這個文件,然后打開meld進行比較,當你關閉meld后,才會提示下一個差異文件。這樣非常浪費效率。能不能直接利用meld的目錄比較能 力呢?
搜了一下,果然有人把腳本寫好了: https://github.com/thenigan/git-diffall
也可以到這里下載: http://files.cnblogs.com/pengdonglin137/git-diffall-master.zip
下下來以后,進行如下配置:
git config --global diff.tool meld
git config --global alias.diffall /PATH/TO/YOUR/git-diffall
現在試試 git diffall HEAD HEAD^1 ?
多謝lxd提出遇到的問題與我分享,上述配置會遇到錯誤 “Expansion of alias ‘diffall’ failed; ‘/xxxx/git-diffall/git-diffall’ is not a git command”,最方便的解決方法就是創建一個軟鏈接在你的PATH路徑之一里,比如:
ln -s /PATH/TO/YOUR/git-diffall ~/bin/git-diffall
然后配置
git config --global diff.tool meld #這一行必須配置,否則diffall不知道該使用哪個diff程序
git config –global alias.diffall git-diffall
git difftool 和 git mergetool是專門提供給我們以用自己的工具進行diff和merge的命令。只要配置一下就可以使用了:
git config --global diff.tool meld #配置默認的difftool
git config --global merge.tool meld #配置默認的mergetool
然后輸入命令 git difftool HEAD HEAD^1 看看?
使用meld直接比較目錄
雖然使用git difftool已經基本滿足了我的需要,但還有個小問題:如果我要比較兩次提交之間的差異時,difftool只能一個文件一個文件的比較,每次都要提 示你是否打開這個文件,然后打開meld進行比較,當你關閉meld后,才會提示下一個差異文件。這樣非常浪費效率。能不能直接利用meld的目錄比較能 力呢?
搜了一下,果然有人把腳本寫好了: https://github.com/thenigan/git-diffall
也可以到這里下載: http://files.cnblogs.com/pengdonglin137/git-diffall-master.zip
下下來以后,進行如下配置:
git config --global diff.tool meld
git config --global alias.diffall /PATH/TO/YOUR/git-diffall
現在試試 git diffall HEAD HEAD^1 ?
多謝lxd提出遇到的問題與我分享,上述配置會遇到錯誤 “Expansion of alias ‘diffall’ failed; ‘/xxxx/git-diffall/git-diffall’ is not a git command”,最方便的解決方法就是創建一個軟鏈接在你的PATH路徑之一里,比如:
ln -s /PATH/TO/YOUR/git-diffall ~/bin/git-diffall
然后配置
git config --global diff.tool meld #這一行必須配置,否則diffall不知道該使用哪個diff程序
git config –global alias.diffall git-diffall
