2010-01-21 519 views
25

是否有可能得到git difftool命令來打開一個目錄比較更改的文件和分段/檢查文件之間?git difftool給目錄比較?

所以理想情況下,如果2個文件發生了變化,它們將是唯一顯示的2個,但在一個目錄比較中。

我讀過關於讓git並行提供所有文件差異的文章,所以像BeyondCompare這樣的工具全部都是the diffs in tabs,但我不滿意!

可以將更改文件的副本從暫存/檢入文件拖到臨時文件夾中,然後將其打開。這是唯一的選擇嗎?

+0

我在我的(類似)的問題可能會幫助你得到的答案:http://stackoverflow.com/questions/4248830/directory-comparison-of-git-branches – 2011-01-06 03:42:37

回答

37

更新2012年6月(2半,年後):

這(比較目錄,而不是文件的文件)似乎是即將上市:
[ANNOUNCE] Git 1.7.11.rc1

git difftool「瞭解了」--dir-diff「選項以生成外部差異工具,該工具可以在填充兩個臨時目錄而不是運行外部實例工具每個文件對一次

見 「Patch difftool: teach difftool to handle directory diffs


原來的答覆(2010年1月)

一個可以拉改動過的文件從暫存/文件中檢查的副本到一個臨時文件夾,然後打開它。這是唯一的選擇嗎?

基本上是:

您difftool腳本將:

  • 創建2個臨時目錄
  • 將自己定義爲一個diff工具
  • 調用git的差異
    • 然後調用自己的文件來區別
    • 在該模式下
    • ,相同的腳本,對每個文件,僅在兩個版本複製到DIFF兩個臨時目錄
  • 然後去和兩個臨時目錄調用比較工具(如beyondCompare或的WinMerge)

this question中有第一個例子。

+1

爲什麼2臨時目錄? 最好將已更改的文件與git沙箱與簽入的源代碼進行比較? 因此,它只有檢入的文件已被修改,需要複製/轉到臨時目錄? 同樣這也是最好的,因爲人們可能想要將更改從checkedin文件合併回工作沙箱。 有沒有人有任何縮進在git中制定這種支持標準? – 2010-01-23 11:18:50

+0

查看更多的答案:http://stackoverflow.com/a/10879804/6309 – VonC 2012-06-04 10:27:19

2

我總是用--dirstat=files

[email protected]:virenze$ git diff --dirstat=files 
    4.1% modules/custom/virenze_conversations/ 
    7.0% modules/custom/virenze_crs/ 
    8.3% modules/custom/ 

,這意味着我已經刪除迪爾斯virenze_conversationscustomvirenze_crs。 (我不知道是什麼意思百分比...)

你或許可以使用所有正常diff選項:--cached,分行名稱等