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: 截图 - 拖拽文件夹到路径输入框的效果
第三步:加载仓库
路径输入好后,点击蓝色的 加载仓库 按钮。工具会自动:
- 扫描仓库的分支列表
- 加载当前分支的提交历史
- 计算统计数据(总提交数、贡献者数等)
加载过程中会显示进度条,如果仓库较大,你随时可以点击 终止加载 停止。提交记录默认显示最近 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 分析器的效果示意
版本发布分析的工作流
通过提交范围滑块和标签定位功能,可以轻松分析版本发布之间的变更:
- 加载仓库提交历史
- 点击 定位到标签区间 按钮,自动框定最近两个标签之间的范围
- 查看筛选后的结果和图表,了解该版本周期内的开发情况
- 导出为 Markdown 或 HTML 报告,作为发布说明的素材
团队协作分析
利用作者筛选和贡献者排行,可以了解团队各成员的贡献情况:
- 加载仓库后,在作者筛选框中输入某个成员的名字
- 统计信息会实时更新为该成员的提交统计
- 切换到图表视图查看该成员的提交时间分布
- 导出筛选结果作为绩效汇报的参考数据
大仓库的加载策略
对于有数万次提交的大型仓库,建议:
- 先用默认的 100 条加载,确认分支选择和路径正确
- 逐步增加提交数量到需要的范围
- 使用批次大小控制流式加载速度,避免界面卡顿
- 利用关键词搜索快速定位感兴趣的提交,而不是盲目增加加载数量
- 使用日期范围筛选器缩小加载范围
项目活跃度监控
定期使用 Git 分析器检查项目仓库:
- 加载仓库后查看时间跨度和平均日提交数
- 切换到图表视图关注提交频率的趋势变化
- 查看贡献者排行了解新老成员的参与情况
- 导出 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 图片的数据量
- 减少包含内容:精简导出内容,如只选择统计信息和贡献者列表,不包含完整提交记录