gitstats: 统计 Git 提交时间分布

gitstats 是安装 pywayne 后提供的命令行工具。进入任意 Git 仓库目录后,运行该命令即可统计提交时间分布并生成图表。

安装与环境

  • 需要已安装 git

  • Python 依赖:pandasmatplotlib (随 pywayne 一并安装)

基本用法

gitstats -h                        # 查看帮助
gitstats .. --since "2024-01-01"   # 指定仓库路径与起始时间

命令行参数

usage: gitstats [repo] [--since SINCE] [--until UNTIL] [--tz TZ]
                [--branch BRANCH] [--all] [--save SAVE]
                [-p | --show-plot | --show_plot]

位置参数:
  repo                  git 仓库路径;省略时为当前目录

可选参数:
  --since SINCE         起始时间;如 2024-01-01、2024-01-01T00:00:00、"90 days ago"、"1 year ago"
  --until UNTIL         终止时间;同上格式
  --tz TZ               时区;如 Asia/Shanghai、UTC;默认 Asia/Shanghai
  --branch BRANCH       指定单一分支;示例:main、develop、origin/main
  --all                 统计所有分支(与 --branch 互斥,指定该项则忽略 --branch)
  --save SAVE           输出图片路径;默认 git_time_distribution.png
  -p, --show-plot       弹窗展示图表(不保存文件)
      --show_plot       同 --show-plot

选项说明与注意事项

  • 分支选择优先级:指定 –all 时会忽略 –branch;二者都未指定时默认使用当前 HEAD 所在分支。

  • 时间范围:可单独指定 –since 或 –until,也可二者同时指定;二者都未指定时统计全历史。

  • 时区:内部以 UTC 解析提交时间,再转换到 –tz;若要原始 UTC,请设置 –tz UTC。

  • 输出:文件若存在将被覆盖;支持绝对与相对路径。

  • 大仓库性能:启用 –all 可能带来较长扫描时间。

  • 若需仅展示图而不保存,使用 -p/–show-plot。

输出

命令运行成功后,会在 --save 指定的路径生成一张 3×2 子图布局的统计图:

  • 每日提交数量折线图

  • 不同小时提交数量柱状图

  • 星期分布柱状图(Mon–Sun)

  • 星期 × 小时 热力图(使用 parula 配色)

示例

# 统计当前仓库最近一年所有分支的提交分布并保存
gitstats --since "1 year ago" --all --save out.png

# 统计当前仓库 main 分支近 90 天的提交,时区为 UTC
gitstats --branch main --since "90 days ago" --tz UTC

# 统计上级目录仓库 develop 分支,指定起止日期
gitstats .. --branch develop --since 2024-01-01 --until 2024-06-30

# 仅指定终止时间(统计至某日为止)
gitstats --until 2025-01-01

# 指定远程分支(如 origin/main)
gitstats --branch origin/main

# 自定义输出文件名与目录
gitstats --all --save results/commit_stats.png

# 仅弹窗展示(不写入文件)
gitstats --since "30 days ago" -p

# 在当前仓库、当前分支、Asia/Shanghai、保存到默认文件
gitstats

常见问题

  • 提示“没有读到提交记录”:检查 repo 路径、分支名是否存在、时间过滤是否过严。

  • 提示 git 调用失败:确认系统已安装 git,且当前目录或传入路径为有效仓库。