如何按文件统计每位开发者的提交次数?现有Git命令使用遇阻
按文件统计Git开发者提交次数的解决方案
没问题,我来帮你搞定这个需求!下面分几种场景给你具体的命令和解释:
1. 统计单个文件的某开发者提交次数
如果你想查看某个特定文件(比如README.md)下,TomyLobo的提交次数,可以用这个命令:
git log --follow --author="TomyLobo" --oneline README.md | wc -l
--follow:追踪文件的重命名历史(如果文件改过名字,也能统计到之前的提交)--author="TomyLobo":指定要统计的开发者(注意名字要和Git提交记录里的一致,大小写敏感)--oneline:让提交记录以单行显示,方便后续统计wc -l:统计输出的行数,也就是该开发者对这个文件的提交次数
如果只是想查看具体的提交记录,去掉| wc -l即可:
git log --follow --author="TomyLobo" README.md
2. 统计所有文件的每位开发者提交次数
如果要批量统计整个项目中,每个开发者对每个文件的提交次数,可以用这个组合命令:
git log --format='%aN' --name-only | awk ' BEGIN { current_user = "" } # 跳过空行 NF == 0 { next } # 识别作者行(单行无路径分隔符的内容) NF == 1 && $0 !~ /\// { current_user = $0 next } # 统计每个作者对每个文件的提交次数 { count[current_user][$0]++ } # 输出最终统计结果 END { for (user in count) { for (file in count[user]) { printf "%-20s %5d %s\n", user, count[user][file], file } } } '
这个命令的逻辑是:
git log --format='%aN' --name-only:先输出每个提交的作者名字,再输出该提交修改的所有文件awk脚本:负责识别作者和对应的文件,统计每个作者对每个文件的提交次数,最后格式化输出(作者名、提交次数、文件名)
3. 统计指定目录下的开发者提交次数
如果只想统计某个目录(比如src/)下的情况,在上述命令基础上加上目录路径即可:
git log --format='%aN' --name-only src/ | awk ' BEGIN { current_user = "" } NF == 0 { next } NF == 1 && $0 !~ /\// { current_user = $0 next } { count[current_user][$0]++ } END { for (user in count) { for (file in count[user]) { printf "%-20s %5d %s\n", user, count[user][file], file } } } '
另外,你之前用git log --author="TomyLobo" --follow没看到记录,是因为--follow需要指定单个文件名才会生效,它是用来追踪单个文件的历史的,不指定文件的话这个参数不起作用哦~
内容的提问来源于stack exchange,提问作者jiggy357
相关产品推荐
相关产品推荐

