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

Git中如何根据近1年文件的贡献作者数量对文件排序

实现方案

命令说明

提供两种统计逻辑的命令,按需选择:

1. 统计所有提交过该文件的作者(包含历史上修改过但代码已被覆盖的贡献者)

该逻辑统计范围更全,只要近1年对该文件提交过代码就算贡献作者:

git log --since="1 year ago" --name-only --pretty=format: \
  | grep -v '^$' | sort | uniq \
  | while IFS= read -r file; do
      if [ -f "$file" ]; then
          author_count=$(git log --follow --since="1 year ago" --pretty=format:"%an" -- "$file" | sort -u | wc -l | tr -d ' ')
          echo "$author_count $file"
      fi
    done \
  | sort -nr

2. 仅统计现存代码行的贡献作者(和你原用blame逻辑一致)

该逻辑仅统计最终留存的代码行对应的作者,和你原来使用git blame的统计逻辑一致:

git log --since="1 year ago" --name-only --pretty=format: \
  | grep -v '^$' | sort | uniq \
  | while IFS= read -r file; do
      if [ -f "$file" ]; then
          author_count=$(git blame --line-porcelain "$file" 2>/dev/null | sed -n 's/^author //p' | sort -u | wc -l | tr -d ' ')
          echo "$author_count $file"
      fi
    done \
  | sort -nr

输出说明

  • 输出第一列为该文件的不同贡献作者数量,第二列为文件路径
  • 默认按作者数量从高到低排序,如需只看前N个结果,在命令末尾添加| head -N即可,例如| head -20查看前20个文件

优化提示

如果仓库文件数量大、命令运行慢,可以缩小统计范围:在第一个git log命令末尾添加需要统计的目录路径,例如只统计src目录下的文件,修改为:
git log --since="1 year ago" --name-only --pretty=format: -- src/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:54:04