3 回答

TA貢獻2021條經驗 獲得超8個贊
從gitv1.7.11 開始,您可以git difftool --dir-diff用來執行目錄差異。
例如,此功能與Meld 3.14.2配合使用,可以瀏覽所有修改的文件:
git difftool --dir-diff --tool=meld HEAD~ HEAD
這是一個方便的Bash函數:
git-diff-meld() (
git difftool --dir-diff --tool=meld "${1:-HEAD~}" "${2:-HEAD}"
)
以下答案適用于git早于v1.7.11的安裝。
在git郵件列表上也問過同樣的問題。
我根據該電子郵件線程整理了一個shell腳本,該腳本在任意提交之間執行目錄差異。
從git v1.7.10開始,該git-diffall腳本包含在contrib標準git安裝的中。
對于v1.7.10之前的版本,可以從GitHub上的git-diffall項目安裝。
這是項目說明:
git-diffall腳本為git提供了基于目錄的diff機制。該腳本依靠diff.tool配置選項來確定使用哪種diff查看器。
該腳本與用于指定diff修訂范圍的所有格式兼容:
1)git diffall:顯示工作樹和已執行的更改之間的差異
2)git diffall --cached [<commit>]:顯示工作樹和已更改HEAD (或其他命名的提交)之間的差異
3)git diffall <commit>:顯示工作樹和已命名的提交之間的差異
4)git diffall <commit> <commit>:顯示兩個命名提交之間的差異
5)git diffall <commit>..<commit>:相同如上
6)git diffall <commit>...<commit>:顯示包含且直到第二個分支的變化,從兩個分支的共同祖先開始<commit>
注意:所有表格均采用可選的路徑限制器 [--] [<path>]
該腳本基于Thomas Rast在Git列表上提供的示例。

TA貢獻1824條經驗 獲得超5個贊
這就是我所決定的...
將以下代碼復制到一個名為git-diffall(無擴展名)的文件中:
#!/bin/sh
git diff --name-only "$@" | while read filename; do
git difftool "$@" --no-prompt "$filename" &
done
將文件放在cmdgit install dir 的文件夾中(例如C:\Program Files (x86)\Git\cmd)
并像您一樣使用git diff:
git diffall
git diffall HEAD
git diffall --cached
git diffall rev1..rev2
etc...
注意:關鍵是&參數,它告訴外部diff命令在后臺任務中運行,以便立即處理文件。對于BeyondCompare,這將打開一個屏幕,每個文件都位于其自己的標簽中。

TA貢獻1848條經驗 獲得超10個贊
meld 具有一個巧妙的功能,如果您在源代碼管理下為它提供一個目錄(Git,Mercurial,Subversion,Bazaar以及其他),它將自動列出所有更改的文件,您可以雙擊以查看各個差異。
與IMO相比,鍵入meld .它并弄清楚VCS比配置VCS啟動要容易得多meld。另外,無論您的項目正使用哪種VCS,您都可以使用相同的命令,如果您經常在它們之間進行切換,那將非常好。
唯一的缺點是,meld掃描更改要比從git / hg / svn傳遞更改慢,盡管我確定它是否足夠慢而不會成為問題,但這取決于您的使用方式。
- 3 回答
- 0 關注
- 1345 瀏覽
添加回答
舉報