有没有简单的方法来计算 Git 中两次提交之间更改的行数?
我知道我可以做一个git diff, 并计算行数,但这似乎很乏味。我也想知道我怎么能做到这一点,包括我自己在行数中的提交。
git diff
您想要 的--stat选项git diff,或者如果您希望在脚本中解析它,--numstat选项。
--stat
--numstat
git diff --stat <commit-ish> <commit-ish>
--stat生成您在合并后习惯看到的人类可读的输出;--numstat生成脚本可以轻松解释的漂亮表格布局。
我不知何故错过了您希望同时在多个提交上执行此操作 - 这是git log. Ron DeVera 谈到了这一点,但实际上你可以做的比他提到的要多得多。由于git log内部调用 diff 机器以打印请求的信息,因此您可以为其提供任何 diff stat 选项 - 而不仅仅是--shortstat. 您可能想要使用的是:
git log
--shortstat
git log --author="Your name" --stat <commit1>..<commit2>
但你也可以使用--numstator --shortstat。git log还可以通过其他多种方式选择提交 - 查看文档。您可能对--since(而不是指定提交范围,只需选择自上周以来的提交)和--no- merges(合并提交实际上不会引入更改)以及漂亮的输出选项(--pretty=oneline, short, medium, full...)感兴趣。
--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 只挑选出具有三个字段的行,即具有统计信息的行)