如何计算GitHub仓库贡献者的代码行数变更量
计算GitHub仓库贡献者代码行数变更量的方法
一、用Git原生命令直接统计
无需额外工具,在本地克隆的仓库目录下执行以下命令即可完成统计:
统计所有贡献者的全历史行数变更:
git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "新增: %s, 删除: %s, 净变更: %s\n", add, subs, loc }' -; done该命令先提取仓库中所有唯一贡献者名称,再逐个统计每个作者提交的新增行数、删除行数,以及净变更行数(新增减删除)。
统计指定时间段内的变更:
给git log添加时间范围参数即可,比如统计2024年上半年的贡献数据:git log --since="2024-01-01" --until="2024-06-30" --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --since="2024-01-01" --until="2024-06-30" --author="$name" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "新增: %s, 删除: %s, 净变更: %s\n", add, subs, loc }' -; done
二、用第三方工具简化统计
1. git-fame
这是一款专注于Git贡献统计的工具,输出格式更直观整洁:
- 安装:通过pip执行
pip install git-fame完成安装 - 基础统计:进入仓库目录后直接运行
git fame,默认会展示每位贡献者的新增行数、删除行数、提交次数、贡献占比等核心数据 - 定制统计:比如仅统计Python和JavaScript文件,执行
git fame --include="*.py,*.js";排除测试与文档目录,执行git fame --exclude="tests/*,docs/*"
2. gitstats
可生成可视化HTML报告,包含多维度统计信息:
- 安装:根据系统选择包管理器安装,Ubuntu用户执行
sudo apt install gitstats,Mac用户执行brew install gitstats - 生成报告:执行
gitstats ./ ./gitstats-report(第一个参数为本地仓库路径,第二个为报告输出目录),打开输出目录中的index.html即可查看贡献者行数统计、提交趋势等可视化内容
注意事项
- 必须克隆完整仓库(避免使用浅克隆
git clone --depth=1),否则会遗漏历史提交的统计数据 - 若贡献者存在多个用户名/邮箱,统计结果会被拆分,可使用
git filter-repo工具批量统一作者信息后再进行统计
内容的提问来源于stack exchange,提问作者Sangeeta
相关产品推荐
相关产品推荐

