You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按文件统计每位开发者的提交次数?现有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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:50:07