2009-04-10 211 views
13

Gitx有一個很好的差異查看器,我該如何讓Git自動將git diff 任何轉換成gitx?如何使git diff在OS X上使用gitx --diff

我試着混帳配置diff.external設置爲一個shell腳本,看起來像這樣:

git diff "$2" "$5" | gitx 

然而,只有打開所有個人文件分成多個gitx窗口,它確實混亂提取文件名(將它們全部更改爲具有瘋狂名稱的tmp文件)。

有沒有人有更好的解決方案?

回答

3

對不起,這並不能真正回答你關於gitx的問題。我甚至不確定gitx是否可以作爲一個通用的diff工具。您可能會喜歡FileMerge,這是Xcode安裝中包含的合併/差異工具。有一個名爲opendiff的腳本可以爲你啓動它。只需製作一段腳本,並在其中指定diff.external即可。

opendiff $2 $5 
+0

+1爲opendiff,但我只是用它來查看差異,而不是編輯。 – claf 2009-04-12 09:11:38

1

我問了一個similar question回來。這個答案可能對你有幫助。這裏有幾個問題,但其中一個與在FileMerge之外的其他位置打開diff視圖有關。

2

我爲Araxis合併做了這個,但修改這些基本指令應該不會讓你的工具變得困難。

首先,我創建了〜/ bin/git-diff-driver.sh併爲該文件添加了執行權限。


#!/bin/sh 

/usr/local/bin/compare -title1:"$1 (repo version)" -title2:"$1 " -max "$2" "$5" 

Araxis安裝它在/ usr/local/bin目錄的命令行界面工具比較工具是他們的通用工具和araxis *工具饋通進行比較。

一旦這被建立以下行需要被添加到〜/的.gitconfig


[merge] 
    tool = araxismerge 
[mergetool "araxismerge"] 
    cmd = "/usr/local/bin/compare -3 -merge -wait $LOCAL $BASE $REMOTE $MERGED" 
    path = /usr/local/bin/ 
[diff] 
    external = "/Users/mark/bin/git-diff-driver.sh" 

此重定向所有的2路和3-窗口方式通過合併Araxis。似乎「路徑=」不應該是必要的,但它起作用。

祝你好運。

18

像sigjuice在那裏說。只有noobs(比如我現在)需要知道如何「連接」git才能使用它。下面是我做的

echo 'opendiff $2 $5' > ~/opendiff-git.sh 
chmod a+x ~/opendiff-git.sh 
git config --global diff.external ~/opendiff-git.sh 

,現在所有的「git的差異無所謂」應該打開FileMerge.app ...

+5

opendiff「$ 2」「$ 5」-merge「$ 5」 適用於在其中有空格的路徑。 ⌘-s將更改從FileMerge保存回本地文件。 – 2011-04-10 02:29:05

+0

我將如何撤銷這個改變(如果說,我厭倦了opendiff並想回到內聯diff工具)? – thewillcole 2012-02-14 01:10:45

5

我不太確定這是你想要什麼,但對我們在Mac上可以肯定的是反正方便,有點關係,你可能會想嘗試:

$ git的difftool -t了opendiff #hash

打開在了opendiff程序的差異,我覺得非常有用

。這比創建shell腳本和通過新的外部差異強制所有差異更容易。如果您不在Mac上,您可以將opendiff更改爲您最喜歡的可用差異工具...

2

我使用這個腳本,我有一個名爲git-diffx並把我的路徑:

#!/bin/bash 

result=$(git diff [email protected]) 

if [ "$result" ]; then 
    echo "$result" | gitx 
fi 

代替git diff ...然後,你叫git diffx ...

2

這個問題可能有點舊,但我只是找到了適合我的東西。

打開GitX應用(第7節),選擇 「GitX」 菜單,然後 「啓用終端使用」

在終端管DIFF經由到gitx:

git的差異| gitx