Git shortlog 仅统计提交次数和作者,不统计增删行数;需用 git log --numstat 配合 awk 等工具聚合,或使用 git-stats 等专用工具实现作者级行数统计。

Git shortlog 本身只统计提交次数和作者信息,**不直接统计修改行数(additions/deletions)**。它适合快速查看“谁提交了多少次”,但若要获取“谁改了多少行”,需组合其他 Git 命令(如 log --stat 或 log --numstat)并配合文本处理工具(如 awk、sort、cut)。
基础提交频次统计(用 shortlog)
这是 shortlog 最常用也最直接的用途:
-
git shortlog -sn:按提交次数降序列出所有作者(-s隐藏提交信息,-n按数字排序) -
git shortlog -sn --since="3 months ago":限定时间范围内的提交统计 -
git shortlog -sn --author="张三":筛选特定作者(注意大小写和邮箱匹配)
统计新增/删除行数(需绕过 shortlog)
Git 没有内置命令直接输出“每位作者的总增删行数”,但可通过以下方式实现:
- 用
git log --numstat --no-merges输出每条提交的文件变更行数(格式:+additions -deletions filename),再按作者聚合 - 典型组合命令(Linux/macOS):
git log --numstat --no-merges --pretty="%aN" | \
awk 'NF==3 {add += $1; del += $2; next} NF==1 {auth=$1; next} END {print auth "\t" add "\t" del}' | \
sort -k2,2nr⚠️ 注意:上述脚本仅统计最后一次提交的作者(因 --pretty="%aN" 和 --numstat 输出交错)。更可靠的做法是分步处理或使用专用工具(见下一条)。
推荐替代方案:用 git-stats 或自定义脚本
为准确、稳定地统计“作者 → 提交数 + 新增行 + 删除行”,建议:
- 安装 git-stats(Node.js 工具):
npm install -g git-stats,运行git-stats --summary可得含行数的贡献概览 - 或使用轻量脚本(Bash 示例):
git log --no-merges --pretty=format:"%aN|%H" --numstat | \
awk -F'|' '
/^$/ {next}
NF==2 {author=$1; next}
NF==3 && $1~/^[0-9]+$/ {add[$author] += $1; del[$author] += $2}
END {
for (a in add) {
print a "\t" add[a] "\t" del[a]
}
}' | sort -k2,2nr小技巧:结合 shortlog 查看某人具体提交内容
在已知高产作者后,可快速审查其工作:
-
git shortlog -nsp --author="李四"确认其提交总数 -
git log --oneline --graph --author="李四" -10查看最近 10 条提交摘要 -
git log -p --author="李四" -1 --stat查看该作者最新一次提交的代码改动+行数统计











