年终统计中如何让git shortlog --summary使用author-date而非commit-date?
由于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
相关产品推荐
相关产品推荐

