Command Reference

git-shortlog 教程

解释如何用 git-shortlog 按作者和主题汇总提交历史。

适合谁看
  • 已经会基本提交和分支操作的开发者
  • 想理解命令边界与风险的人
前置知识
  • 知道工作区、暂存区、提交的基本关系
  • 能读懂 `git status` 和简单历史图
常见风险
  • 误把本地整理命令用到共享历史
  • 在没确认恢复路径前直接继续改写历史

一句话理解

git-shortlog 用于按作者和主题汇总提交历史。

什么时候适合用

  • 当你需要按作者和主题汇总提交历史
  • 当你想把这类操作做成稳定流程而不是手工重复
  • 当你需要更准确地理解 Git 在这一步到底记录了什么

基本示例

git shortlog -sn

读这条命令时最该注意什么

先把默认行为弄清楚,再去组合更多参数,通常能少踩很多隐藏规则。

一个更稳的实践建议

把它和 status、log、diff 一起看,更容易确认到底改了什么。

补充理解角度

  • 理解这条命令的默认行为
  • 把它放进日常提交或排查流程
  • 在脚本或团队习惯里稳定复用

这条命令在流程里解决什么问题

git shortlog 解决的是"需要按作者汇总提交信息"的问题。它将 git log 的输出按作者分组并统计提交数量,适合生成发布说明、贡献者列表或统计团队工作量。

典型用例

  • 发布新版本时,用 git shortlog -sn v1.0..v2.0 生成按提交数排序的贡献者列表,放入发布说明中。
  • 回顾一个版本的变更时,用 git shortlog --no-merges 过滤掉合并提交,只看实际的代码贡献。
  • git shortlog -sne 同时显示作者姓名、邮箱和提交数,用于贡献者统计和报告。

图例理解

按作者汇总提交shortlog 读取提交历史,按作者分组并汇总提交主题,输出适合人类阅读的报告格式。
提交历史
提交记录作者信息提交主题提交范围
产出
按作者分组提交数量统计汇总的提交主题
shortlog 的输出可以直接用于发布说明,但默认从 stdin 读取——不加范围参数时行为与 git log 不同。

特殊情况与边界

  • git shortlog 默认从 stdin 读取(常用于管道 git log | git shortlog),如果直接运行且不在 tty 中可能无输出。直接运行时建议加上提交范围如 HEADv1.0..v2.0
  • 它只读取提交历史,不修改仓库任何内容,是纯只读命令。
  • -s 只显示统计数字,不加则同时显示每个提交的主题行。
  • 合并提交也会被统计,如果需要排除合并提交,需要搭配 --no-merges(通常通过 git log --no-merges | git shortlog 实现)。

延伸阅读

继续搭配 git status、git log、git show 一起看,通常更容易判断这条命令对历史、索引和工作区分别造成了什么影响。