你想要的--stat
的选项git diff
,或者如果您想在脚本中解析它,--numstat
option.
git diff --stat <commit-ish> <commit-ish>
--stat
产生合并后您习惯看到的人类可读的输出;--numstat
生成一个漂亮的表格布局,脚本可以轻松解释。
我不知何故错过了您希望同时在多个提交上执行此操作 - 这是一项任务git log
。 Ron DeVera 谈到了这一点,但实际上你可以做的比他提到的要多得多。自从git log
内部调用 diff 机制以打印请求的信息,您可以给它任何 diff stat 选项 - 不仅仅是--shortstat
。您可能想要使用的是:
git log --author="Your name" --stat <commit1>..<commit2>
但你可以使用--numstat
or --shortstat
以及。git log
还可以通过其他各种方式选择提交 - 看看文档。您可能对以下内容感兴趣--since
(而不是指定提交范围,只需选择自上周以来的提交)并且--no-merges
(合并提交实际上并没有引入更改),以及漂亮的输出选项(--pretty=oneline, short, medium, full...
).
这是一个单行代码,用于获取全部更改,而不是从 git log 中获取每次提交更改(根据需要更改提交选择选项 - 这是您从 commit1 到 commit2 的提交):
git log --numstat --pretty="%H" --author="Your Name" commit1..commit2 | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("+%d, -%d\n", plus, minus)}'
(你必须让 git log 打印一些关于提交的识别信息;我任意选择了哈希,然后使用 awk 只挑选出具有三个字段的行,即带有统计信息的行)