git log --pretty=format:'%an' --numstat | awk 'BEGIN { FS="\t" }/^[a-zA-Z]/ { author=$0; commits[author]++ }/^[0-9]/ { added[author]+=$1; deleted[author]+=$2 }END {for (author in commits) {print author, "提交次数:", commits[author], "增加的代码行数:", added[author], "删除的代码行数:", deleted[author]}}'
it log --pretty=format:‘%an’ --numstat:
%an: 显示提交的作者名字。
–numstat: 显示每次提交的增加和删除行数。
输出的格式是:
复制代码
Author Name
lines_added lines_deleted filename
会多次出现作者名字,然后紧接着是该作者的提交的增加和删除行数。
awk:
BEGIN { FS=“\t” }:设置字段分隔符为制表符。
/^[a-zA-Z]/ { author=$0; commits[author]++ }:匹配作者名字行,将其存入变量 author,并记录提交次数。
/^[0-9]/ { added[author]+=$1; deleted[author]+=$2 }:匹配行首为数字的行,累加增加的行数和删除的行数。
END { for (author in commits) { … } }:遍历所有作者,输出每个作者的提交次数、增加的行数和删除的行数。
输出结果:
提交次数:每个用户的提交总次数。
增加的代码行数:每个用户提交中增加的总行数。
删除的代码行数:每个用户提交中删除的总行数。
这将为每个用户输出他们的提交次数、增加的行数和删除的行数。