2025-05-22
git
00

目录

Git 代码贡献统计脚本解析
功能概述
命令分解
分步解析
1. 获取所有贡献者名单
2. 遍历每个贡献者
3. 统计每个作者的变更
4. 使用 awk 汇总统计
输出示例
实用技巧

Git 代码贡献统计脚本解析

功能概述

这个 Git 命令组合用于统计指定时间段内(2025年5月)所有贡献者的代码变更情况,包括:

  • 每个贡献者新增的代码行数
  • 删除的代码行数
  • 净变更行数(新增-删除)

命令分解

bash
git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --since="2025-05-01" --until="2025-05-31" \ --pretty=tformat: --numstat | \ awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done

分步解析

1. 获取所有贡献者名单

bash
git log --format='%aN' | sort -u
  • --format='%aN':只输出作者姓名
  • sort -u:排序并去重

2. 遍历每个贡献者

bash
while read name; do ... done

对每个唯一作者进行循环处理

3. 统计每个作者的变更

bash
git log --author="$name" --since="2025-05-01" --until="2025-05-31" \ --pretty=tformat: --numstat
  • --author="$name":只统计指定作者的提交
  • --since/--until:时间范围限定
  • --numstat:显示每个文件变更的行数统计

4. 使用 awk 汇总统计

awk
{ add += $1; # 累加新增行数 subs += $2; # 累加删除行数 loc += $1 - $2 # 计算净变更 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }

输出示例

John Doe added lines: 542, removed lines: 123, total lines: 419 Jane Smith added lines: 321, removed lines: 210, total lines: 111

实用技巧

  1. 修改时间范围

    bash
    --since="2025-04-01" --until="2025-04-30" # 统计4月份
  2. 按周统计

    bash
    --since="1.weeks.ago" # 最近一周
  3. 排除合并提交

    bash
    --no-merges
  4. 只统计特定文件类型

    bash
    -- "*.js" "*.css" # 只统计JS和CSS文件

应用场景

  1. 月度/季度代码贡献报告
  2. 团队成员绩效评估
  3. 项目活跃度分析
  4. 代码重构效果评估

这个脚本是Git代码库分析的强大工具,可以帮助团队管理者更好地了解项目开发状况和成员贡献度。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:糀飞

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!