如何统计Git仓库中每位作者提交消息的平均字符数?(不擅长Bash)
计算Git仓库中每位作者提交消息的平均字符数
别发愁,我来给你写个简单的Bash命令组合,轻松搞定这个统计需求!不用怕复杂,我会一步步给你解释清楚。
直接可用的命令
在你的Git仓库根目录下,直接运行这段命令就行:
git log --pretty=format:"%an|%s" | awk -F'|' '{ msg_len = length($2) author_stats[$1]["total_chars"] += msg_len author_stats[$1]["commit_count"] += 1 } END { # 打印表头,让结果更规整 printf "%-20s %12s %18s\n", "作者名称", "提交次数", "平均消息字符数" printf "%-20s %12s %18s\n", "----------", "----------", "------------------" # 遍历统计结果,计算并输出平均值 for (author in author_stats) { avg_len = author_stats[author]["total_chars"] / author_stats[author]["commit_count"] printf "%-20s %12d %18.2f\n", author, author_stats[author]["commit_count"], avg_len } }'
命令细节解释
git log --pretty=format:"%an|%s":用Git导出所有提交的关键数据,%an是作者名称,%s是提交消息的主题部分,用|作为分隔符方便后续处理。awk -F'|':以|为分隔符解析每行数据:- 先计算单条提交消息的字符长度
msg_len = length($2) - 用关联数组
author_stats分别累加每个作者的总字符数和提交次数 - 最后遍历数组,算出平均长度并格式化输出,让结果可读性更强
- 先计算单条提交消息的字符长度
可选扩展
- 如果想统计完整提交消息(包括主题+正文),把
git log的格式改成%an|%B就行,%B会输出完整的提交内容。 - 如果同一个作者有多个用户名/邮箱别名,可以先通过Git的
git filter-branch统一作者信息,再运行统计,结果会更准确。
内容的提问来源于stack exchange,提问作者KX68C4qxM51mtdzex7O8iMPU
相关产品推荐
相关产品推荐

