如何通过Git Shortlog命令精确统计各贡献者代码提交频率和修改行数详情?
- 内容介绍
- 文章标签
- 相关推荐
本文共计708个文字,预计阅读时间需要3分钟。
Git短命令`shortlog`可用于快速查看谁提交了多少次以及作者信息。它显示提交次数和作者,但不直接统计修改行数。若需获取修改行数,需结合其他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查看该作者最新一次提交的代码改动+行数统计
本文共计708个文字,预计阅读时间需要3分钟。
Git短命令`shortlog`可用于快速查看谁提交了多少次以及作者信息。它显示提交次数和作者,但不直接统计修改行数。若需获取修改行数,需结合其他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查看该作者最新一次提交的代码改动+行数统计

