如何通过Git Shortlog命令精确统计各贡献者代码提交频率和修改行数详情?

2026-04-27 18:471阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计708个文字,预计阅读时间需要3分钟。

如何通过Git Shortlog命令精确统计各贡献者代码提交频率和修改行数详情?

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 查看该作者最新一次提交的代码改动+行数统计
标签:Git

本文共计708个文字,预计阅读时间需要3分钟。

如何通过Git Shortlog命令精确统计各贡献者代码提交频率和修改行数详情?

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 查看该作者最新一次提交的代码改动+行数统计
标签:Git