You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

年终统计中如何让git shortlog --summary使用author-date而非commit-date?

解决方案:基于author-date统计Git提交次数

由于git shortlog --summary默认使用commit-date进行日期过滤和统计,且没有直接参数切换到author-date,我们可以通过git log配合文本处理工具实现基于author-date的提交统计,具体如下:

核心命令

针对指定日期范围(比如2022年),执行以下命令即可得到基于author-date的作者提交次数统计:

git log --all --pretty="%ai %aN" | awk '$1 >= "2022-01-01" && $1 <= "2022-12-31" {print $2}' | sort | uniq -c | sort -nr

参数解释

  • --all:统计所有分支的提交(若只需当前分支可省略)
  • --pretty="%ai %aN":输出格式为ISO格式的author-date + 作者名称
  • awk语句:筛选author-date在目标范围内的记录,仅保留作者名称
  • sort | uniq -c:对作者名称去重并统计提交次数
  • sort -nr:按提交次数从多到少排序

封装为脚本(可选)

如果需要频繁使用,可将逻辑封装成Shell脚本,方便快速调用:

#!/bin/bash
# 基于author-date统计Git提交次数
# 使用方式: ./count-author-commits.sh <起始日期> <结束日期>
# 示例: ./count-author-commits.sh 2021-01-01 2021-12-31

start_date="$1"
end_date="$2"

if [ -z "$start_date" ] || [ -z "$end_date" ]; then
    echo "错误:请传入起始日期和结束日期"
    echo "使用方式: $0 <起始日期> <结束日期>"
    exit 1
fi

git log --all --pretty="%ai %aN" | awk "\$1 >= \"$start_date\" && \$1 <= \"$end_date\" {print \$2}" | sort | uniq -c | sort -nr

保存为count-author-commits.sh,赋予执行权限后即可直接使用。

原理说明

git shortlog的日期过滤逻辑完全依赖git log的commit-date判断,且官方未提供切换到author-date的参数。通过直接调用git log输出author-date和作者信息,再用文本工具筛选统计,就能绕过commit-date的限制,得到基于作者提交时间的准确数据。

内容的提问来源于stack exchange,提问作者ateam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 09:50:42