使用meld做git的diff工具


轉載:

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

 

方案二

搜了一下,抄來抄去的都不靠譜。抄的比較多的是這個方案:

因為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 diff的默認行為。實際上git提供了命令 git difftool 來完成這類工作,而且比引文中的方法更智能。
 
使用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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM