如何统计Git两个提交之间新增、删除、修改的文件数量?
统计Git两个提交间新增/删除/修改的文件数量
要区分统计两个提交之间不同状态的文件数量,可以利用git diff的--name-status参数,它会输出每个变更文件的状态标识,再结合文本处理工具统计数量:
单独统计各状态文件数
- 统计新增文件数量:
git diff --name-status <commit-ish1>..<commit-ish2> | grep -c '^A' - 统计删除文件数量:
git diff --name-status <commit-ish1>..<commit-ish2> | grep -c '^D' - 统计修改文件数量:
git diff --name-status <commit-ish1>..<commit-ish2> | grep -c '^M'
一次性汇总所有变更状态
如果想同时查看所有变更类型的数量,用awk一次性统计:
git diff --name-status <commit-ish1>..<commit-ish2> | awk '{count[$1]++} END {for (status in count) print status ": " count[status]}'
输出示例:
A: 5
D: 2
M: 12
R: 1
状态标识说明
A:新增文件D:删除文件M:修改文件R:重命名文件(如果有文件被重命名,会显示此标识)
git diff --stat仅展示变更文件的行数变化和文件名,无法区分文件的新增/删除/修改状态,而--name-status刚好弥补了这个不足。
内容的提问来源于stack exchange,提问作者joniba
相关产品推荐
相关产品推荐

