2012-02-16 56 views
4

我想獲取所有匹配某些條件的提交中更改的文件。所以我有以下內容:git log --grep=123,我需要將該提交中更改的文件作爲彙總列表(例如,如果文件在多次提交中發生更改,則只能在結果列表中包含一次。這就像選擇在烏龜SVN日誌窗口多次提交,它列出了在選定的更改過的所有文件提交git list在幾次提交中更改文件

回答

5

git log不應該用於腳本,但這裏有一個快速的解決方案:

git log --grep=pattern --name-only --pretty=format:'' | sort -u 
+1

爲什麼'git的log'不應該在腳本中使用? – 2012-02-16 16:37:11

+2

因爲它是一個所謂的瓷命令,用於人類用戶消費,而提供用於機消耗量(腳本)的管道命令。要正確地寫上面一行,應該使用'git的REV-list'和'git的差異,tree'或東西... – knittl 2012-02-16 16:40:22

+0

@knittl:我不完全同意這種說法。 'git-log'對於腳本*來說是非常合理的,如果你仔細控制輸出格式*,就像'git status'不好,但'git status --porcelain'好。你真的會建議運行'git rev-list ...'並用'git show --format = ...'循環它,而不是簡單地使用'git log ... --format = ...'? – Cascabel 2012-02-16 17:08:59

0

不準確的答案,但如果你的病情開始和一致提交一系列的git結束的位置是隨時準備提供幫助:

git diff --name-only <SHA, tag start> <SHA, tag end>