09-代码量统计

nobility 发布于 17 天前 01-Git 33 次阅读


代码量统计

在自建 Git 服务器中,一般会用“服务端 hook”机制来记录谁 push 的动作做了什么、更新了多少行代码,有时公司的管理者会利用这些工具来生成代码量报表,用于评估每个开发者的工作量,虽然这可能无法直接评估出某个开发者的工作量,但是这也是一种管理手段,但是代码量的报表并不是每个开发者都可以看到的,所以为了避免产生不必要的误会,我们需要用 git 自查,最起码要保证在每个月的中旬代码量超过 1500 行。

查询某个提交增删了多少行

# 看单个提交的统计信息
git show --stat <commit>
# 只看总增删行数
git show --shortstat <commit>
# 精确拿到每个文件增删行数
git show --numstat

统计某个时间段、某个人提交的代码量

# 统计某个人、某时间段的增删代码行数
git log --author="张三" --since="2026-05-01" --until="2026-05-31" --pretty=tformat: --numstat | awk '($1 ~ /^[0-9]+$/ && $2 ~ /^[0-9]+$/) {add+=$1; del+=$2} END {print "新增:", add, "删除:", del}'
# 统计某个人、某时间段的提交次数
git log --author="张三" --since="2026-05-01" --until="2026-05-31" --oneline | wc -l

统计某个时间段所有人提交的代码量

# 列含义依次是:作者、邮箱、新增行数、删除行数、文件数
git log --since="2026-05-01" --until="2026-05-31" --pretty=format:'__COMMIT__%n%an%x09%ae' --numstat \
| awk '
BEGIN { FS="\t" }
$0=="__COMMIT__" { getline; author=$1; email=$2; next }
($1 ~ /^[0-9]+$/ && $2 ~ /^[0-9]+$/) {
    key = author "\t" email
    add[key] += $1
    del[key] += $2
    files[key] += 1
}
END {
    for (k in add) {
        split(k, a, "\t")
        printf "%s\t%s\t%d\t%d\t%d\n", a[1], a[2], add[k], del[k], files[k]
    }
}
' \
| sort -t$'\t' -k3,3nr
# 如果后续要按其他字段排序,只需要把最后的排序改掉,比如 `-k4,4nr` 就代表按第 4 列删除行数数降序

PS:

GitHub 个人主页上的贡献图,本质是一个日历热力图,每个格子代表一天,颜色深浅代表当天的贡献数量,只要某一天有 commit、PR、issue、review 等贡献,都会点亮。

实际上我们可以利用 GitHub 贡献图进行作画,通过伪造不同日期的 commit 来控制 GitHub 贡献图上每一天的格子亮起,从而拼凑出图案,比如 github-contribution-grid-snake 这个开源项目就可以帮助我们完成这件事。

加油啊!即便没有转生到异世界,也要拿出真本事!!!\(`Δ’)/
最后更新于 2026-05-24