Skip to content

Git 分析器

概述

Git 分析器是一个直观的 Git 仓库提交历史分析工具。它帮你快速了解一个项目的开发节奏、贡献者分布和代码变更趋势——不需要背 Git 命令行参数,也不需要写脚本。选一个仓库,点一下"加载",提交历史、统计数据和可视化图表一目了然。

核心功能

  • 一键加载与分析:输入 Git 仓库路径,自动加载提交历史并计算统计数据(总提交数、贡献者数、时间跨度、日活跃度)
  • 多维筛选器:通过关键词、日期范围、作者、提交类型(feat/fix/docs 等)和范围滑块组合筛选,精准锁定目标提交
  • 提交详情与范围选择:通过滑块框定提交范围,支持标签快速定位(最新标签、两个标签间的区间),查看单条提交的完整信息和文件变更
  • 灵活导出:支持 Markdown、JSON、CSV、HTML 和纯文本五种格式,可精细控制导出内容(统计、提交、贡献者、时间线、图表数据等)
  • 统计图表可视化:直观的提交频率折线图、贡献者排行柱状图和热力图,一眼看出项目的开发活跃模式
  • LLM 集成:分析结果可直接导出为格式化文本供 AI 聊天使用,或通过 Agent 接口由 LLM 直接查询仓库

快速上手

首次使用 6 步走

第一步:打开工具

在左侧工具列表中找到 Git 分析器,点击进入。你会看到一个简洁的信息卡片界面,顶部是工具栏和路径输入区。

TODO: 截图 - 工具整体界面,标注路径输入框、加载按钮和主内容区

第二步:选择仓库路径

有两种方式指定 Git 仓库:

  • 手动输入:直接在路径输入框中键入或粘贴本地 Git 仓库的绝对路径例如 D:\projects\my-app
  • 选择目录:点击路径框右侧的 选择 按钮,通过系统文件对话框选取仓库目录
  • 拖拽目录:将仓库文件夹从资源管理器拖拽到路径输入区域,松开即可自动填入路径

路径支持自动补全,输入时会提示最近使用过的仓库路径。

TODO: 截图 - 拖拽文件夹到路径输入框的效果

第三步:加载仓库

路径输入好后,点击蓝色的 加载仓库 按钮。工具会自动:

  1. 扫描仓库的分支列表
  2. 加载当前分支的提交历史
  3. 计算统计数据(总提交数、贡献者数等)

加载过程中会显示进度条,如果仓库较大,你随时可以点击 终止加载 停止。提交记录默认显示最近 100 条,你可以调整数量。

TODO: 截图 - 加载过程中的进度条显示

第四步:浏览提交列表

加载完成后,主内容区会显示提交记录列表,每条记录包含:

  • 提交哈希(短格式,前 7 位)
  • 作者名称和日期
  • 提交消息摘要
  • 代码变更统计(新增行数 + 删除行数 + 变更文件数)

点击任意一条提交,会弹出详情对话框,展示完整的提交信息、文件变更列表和标签信息。

TODO: 截图 - 提交列表视图,标注各信息字段

第五步:查看统计图表

点击上方的 统计图表 标签页,切换到可视化视图。这里包含三个图表:

  • 提交频率折线图:按日期展示每天的提交次数,直观反映开发活跃度
  • 贡献者排行柱状图:各贡献者的提交数量排行
  • 提交热力图:按星期几和小时维度展示提交分布模式

图表会实时响应筛选条件的变化——当你调整筛选器后,图表会自动更新。

TODO: 截图 - 统计图表视图,标注三个图表区域

第六步:导出分析结果

点击工具栏的 导出 按钮,在弹出的对话框中配置导出选项。你可以选择:

  • 导出格式:Markdown(默认)、JSON、CSV、HTML、纯文本
  • 包含内容:统计信息、提交记录、贡献者列表、时间线、图表数据
  • 提交范围:全部提交、当前筛选结果或自定义数量
  • 隐私选项:显示/隐藏作者名称和邮箱

点击 导出 后,文件会保存到指定位置。

TODO: 截图 - 导出对话框,标注各配置选项

功能详解

控制面板

控制面板位于界面上方,分为工具栏、筛选器、范围选择器和统计信息四个区域。

工具栏

工具栏固定在控制面板顶部,从左到右依次是:

功能说明
路径输入框输入或粘贴 Git 仓库路径,支持拖拽
选择按钮打开系统文件对话框选取目录
分支选择器下拉选择要分析的分支,自动获取当前仓库的分支列表
提交数量设置加载的提交记录数量(0 表示加载全部)
批次大小流式加载时的每批数量(0 表示非流式加载)
加载仓库开始加载提交历史;下拉菜单可选"加载全部"

TODO: 截图 - 工具栏全貌,标注各功能区域

分支选择:下拉分支列表时,需要加载分支列表,如果仓库较大可能会有短暂延迟。当前分支会标注 "(当前)" 字样。

提交数量:默认 100 条。如果仓库提交非常多,建议从较小的数量开始加载,确认是自己需要的范围后再调到更大值。设置为 0 会加载仓库的所有提交记录。

批次大小:流式加载模式下,每次批量处理多条记录,可以减少界面卡顿。默认为 20。设置为 0 会使用非流式加载(一次性全部加载),适合提交数较少的仓库。

筛选器

筛选器区域在工具栏下方,提供多种维度的筛选条件:

筛选条件说明
关键词搜索搜索提交哈希、提交消息或文件路径中包含的关键词
排除关键词排除提交消息中包含特定关键词的提交
日期范围选择起始和结束日期,只显示该时间段内的提交
作者筛选按作者名称筛选(部分匹配)
提交类型按 Conventional Commits 类型筛选(feat/fix/docs/style/refactor/perf/test/chore/build/ci/revert/other)
倒序切换从最旧到最新的排列顺序
清除一键清除所有筛选条件

筛选器支持组合使用——同时设置关键词、日期范围和作者时,结果取交集。

TODO: 截图 - 筛选器区域,标注所有筛选控件

提交范围滑块

在筛选器下方,有一个 提交范围 滑块,用于精确框定要操作的提交区间:

  • 滑块两端分别对应"最新"和"最旧"
  • 拖动左右手柄调整范围
  • 下方有精确的数字输入框,可以直接输入范围
  • 右侧会显示当前范围内的提交数量

标签定位:滑块右侧有两个标签按钮:

按钮说明
定位到最新标签将范围设为从最新提交到最近的标签之间
定位到标签区间将范围设为最近两个标签之间的提交区间

这在查看版本发布之间的变更时非常有用——比如想知道 v1.0 到 v2.0 之间发生了哪些改动,点击 "定位到标签区间" 即可。

TODO: 截图 - 提交范围滑块,标注手柄、数字输入框和标签定位按钮

统计信息

当提交数据加载完成后,控制面板底部会显示四个统计指标:

指标说明
总提交数当前分支的总提交数量
贡献者数提交历史中的独立作者数量
时间跨度(天)从第一次提交到最后一次提交的天数
平均提交/天总提交数 ÷ 时间跨度

这些统计数字会随筛选条件变化而更新——当你应用筛选器后,统计值是筛选结果的统计。

TODO: 截图 - 统计信息区域,标注四个指标

提交列表视图

"提交列表"标签页是默认视图,以分页卡片列表展示每条提交记录。每条提交卡片包含:

  • 序号:在列表中的位置编号
  • 提交哈希:短格式哈希,点击可复制完整哈希
  • 作者:提交者名称
  • 日期:提交时间(显示格式可在设置中调整)
  • 消息:提交消息摘要
  • 代码统计:新增行数(绿色)、删除行数(红色)、变更文件数(蓝色)

TODO: 截图 - 一条提交卡片的放大视图,标注各信息字段

分页:列表底部有分页器,默认每页 20 条,可在设置中调整。

查看详情:点击任意提交卡片,会打开提交详情对话框,包含:

信息说明
完整哈希提交的完整 SHA 值,带复制按钮
作者作者名称和邮箱
日期提交时间
提交消息提交消息全文
标签该提交关联的标签
分支该提交所属的分支
文件变更变更文件列表(路径、变更类型、新增/删除行数)
代码统计新增行、删除行、变更文件总数

TODO: 截图 - 提交详情对话框

统计图表视图

"统计图表"标签页提供三个 ECharts 图表:

提交频率折线图

按日期展示每天的提交次数。X 轴为日期,Y 轴为提交次数。你可以看到项目在哪几天特别活跃、哪些时间段比较平淡。

TODO: 截图 - 提交频率折线图

贡献者排行柱状图

各贡献者的提交数量排行。X 轴为贡献者名称,Y 轴为提交次数,按提交数降序排列。

TODO: 截图 - 贡献者排行柱状图

提交热力图

按"星期几 × 小时"维度展示提交分布。X 轴为小时(0-23),Y 轴为星期(周一至周日),颜色深浅代表提交密度。这个图特别适合回答"团队一般什么时候提交代码"这类问题。

TODO: 截图 - 提交热力图

图表上方有 截图 按钮,方便你将图表保存为图片用于报告或演示。

导出功能

点击工具栏的 导出 按钮,打开导出配置对话框。

导出格式

格式适用场景
Markdown分享到文档、GitHub README 或知识库
JSON程序化处理、数据迁移、与工具链集成
CSV导入电子表格(Excel/Google Sheets)做进一步分析
HTML生成可视化报告,支持浅色/深色主题自动适配
纯文本快速粘贴到聊天、邮件等无格式场景

导出内容配置

你可以精细控制导出包含哪些内容:

选项说明
统计信息总提交数、贡献者数、时间跨度、平均日提交数
提交记录提交详情列表
贡献者列表贡献者名称和提交数(含占比)
时间线每日提交数量的时间序列
图表数据HTML 格式下包含统计图表的 base64 图片

提交范围:可选择"全部提交"、"当前筛选结果"或"自定义数量"。默认使用当前筛选结果。

日期格式:支持 ISO 8601、本地时间、相对时间和 Unix 时间戳四种格式。

隐私选项:可以控制在导出结果中是否显示作者名称和邮箱。邮箱默认隐藏。

其他选项:完整提交消息、文件变更列表、标签信息、分支信息、代码统计等都可以独立开关。

TODO: 截图 - 导出配置对话框的完整视图

HTML 导出特色

选择 HTML 格式时,会生成一份完整的可视化报告,包含:

  • 仓库信息和分支信息头部
  • 统计信息概览卡片
  • 贡献者排行(含百分比进度条)
  • 每日提交频率图表
  • 提交记录列表(含文件变更详情)

HTML 报告支持三种主题:跟随系统浅色主题深色主题,导出时选择即可。

TODO: 截图 - HTML 导出的报告预览

配置自动保存

Git 分析器会自动保存你的所有操作状态,包括仓库路径、选中的分支、筛选条件、导出配置等。下次打开工具时,所有状态都会自动恢复,无需重新配置。

TODO: 截图 - 配置自动保存的示意

高级用法

与 AI 聊天联动

分析结果可以通过多种方式与 AI 聊天联动:

方式一:导出后发送

将分析结果导出为 Markdown 或纯文本后,复制内容到 AI 聊天中,让 AI 帮你分析项目开发趋势。

方式二:Agent 自然语言查询

如果配置了 LLM 服务,可以直接在 AI 聊天中发起类似"帮我分析 D:\projects\my-app 的提交历史"或"查看张三最近 50 条提交"的请求,LLM 会自动调用 Git 分析器接口并返回格式化结果。

TODO: 截图 - Agent 调用 Git 分析器的效果示意

版本发布分析的工作流

通过提交范围滑块和标签定位功能,可以轻松分析版本发布之间的变更:

  1. 加载仓库提交历史
  2. 点击 定位到标签区间 按钮,自动框定最近两个标签之间的范围
  3. 查看筛选后的结果和图表,了解该版本周期内的开发情况
  4. 导出为 Markdown 或 HTML 报告,作为发布说明的素材

团队协作分析

利用作者筛选和贡献者排行,可以了解团队各成员的贡献情况:

  1. 加载仓库后,在作者筛选框中输入某个成员的名字
  2. 统计信息会实时更新为该成员的提交统计
  3. 切换到图表视图查看该成员的提交时间分布
  4. 导出筛选结果作为绩效汇报的参考数据

大仓库的加载策略

对于有数万次提交的大型仓库,建议:

  1. 先用默认的 100 条加载,确认分支选择和路径正确
  2. 逐步增加提交数量到需要的范围
  3. 使用批次大小控制流式加载速度,避免界面卡顿
  4. 利用关键词搜索快速定位感兴趣的提交,而不是盲目增加加载数量
  5. 使用日期范围筛选器缩小加载范围

项目活跃度监控

定期使用 Git 分析器检查项目仓库:

  1. 加载仓库后查看时间跨度和平均日提交数
  2. 切换到图表视图关注提交频率的趋势变化
  3. 查看贡献者排行了解新老成员的参与情况
  4. 导出 HTML 报告存档,方便后续对比

常见问题

Q:为什么点击"加载仓库"后没有反应?

有几种可能的原因:

  • 路径不正确:请确认输入的路径是本地文件系统的绝对路径,而不是远程仓库地址(如 GitHub URL)
  • 不是 Git 仓库:该目录下可能缺少 .git 文件夹,可以通过命令行 git status 确认
  • 仓库被占用:其他 Git 操作(如正在 rebase 或 cherry-pick)可能导致仓库被锁定,等操作完成后再试
  • 权限不足:确认当前用户有读取该目录的权限

TODO: 截图 - 路径无效时的错误提示

Q:加载大量提交时界面卡顿怎么办?

可以尝试以下方法:

  • 减少提交数量:先加载较少的提交(如 50 或 100 条),确认范围后再增加
  • 调整批次大小:较小的批次(如 10–20)可以减少单次处理的数据量,降低卡顿
  • 使用非流式加载:将批次大小设为 0,工具会一次性加载所有记录,适合提交数较少的仓库
  • 使用筛选器:先用日期范围或关键词缩小范围,再加载数据

Q:为什么有些提交看不到文件变更?

提交的文件变更信息是通过 git show --stat 获取的。如果看不到文件变更,可能是因为:

  • 加载时未获取详情:批量加载时默认只获取提交的摘要信息。查看详情时(点击提交卡片),会自动获取完整的文件变更列表
  • Merge 提交:Merge 提交通常没有直接的代码变更,文件变更列表可能为空
  • 未跟踪变更:某些特殊操作(如 git commit --allow-empty)不会有任何文件变更

Q:筛选器组合使用时结果为空?

检查是否多个筛选条件互相冲突。例如:

  • 关键词搜索和排除关键词同时使用,可能导致所有提交都被排除
  • 日期范围设置的太窄,没有覆盖任何提交的日期
  • 提交类型和作者筛选组合,交集结果可能为空

建议先单独使用每个筛选条件确认是否正常,然后再逐个组合排查问题。

Q:导出 HTML 报告很大怎么办?

HTML 报告的大小主要受提交记录数量和图表数据影响。如果报告过大:

  • 缩小提交范围:在导出对话框中选择"当前筛选结果"或缩小提交范围
  • 不包含图表数据:取消导出配置中的"图表数据"选项,减少 base64 图片的数据量
  • 减少包含内容:精简导出内容,如只选择统计信息和贡献者列表,不包含完整提交记录

Released under the Apache-2.0 License.