AI Commit Message 生成器 - 根据 Git Diff 生成提交信息
在线粘贴 git diff,使用 AI 生成 Conventional Commits、GitHub 风格或中文 Commit Message,同时输出变更摘要和 Breaking Change 提醒。
功能特点
- 根据文件改动和代码差异判断提交类型、Scope 和变更目的
- 生成可直接复制的标题与完整 Commit Message
- 输出变更摘要并单独提示可能的 Breaking Change
- 提交差异经后端代理发送给 AI 服务,浏览器端不保存模型服务密钥
- 按 Conventional Commits 检查 type、scope、Breaking Change,并要求人工复核完整 staged diff
使用方法
- 粘贴 git diff、PR 变更摘要或文件改动片段
- 选择 Conventional Commits、GitHub 风格或中文提交规范,并补充 Scope
- 检查 AI 生成的标题、正文和 Breaking Change,再对照完整 staged diff、测试与发布影响复制到 Git 工作流中
示例输入
新增按钮禁用状态
diff --git a/src/components/Button.vue b/src/components/Button.vue +const isDisabled = ref(false);适合根据组件、接口或业务模块的实际改动生成 type(scope): description。 结果为说明性的 AI 文案示例,会随 diff、仓库规范和模型响应变化。
接口错误处理调整
diff --git a/src/api/client.ts b/src/api/client.ts +return response.ok ? data : throwApiError(response);适合在提交前快速归纳错误处理、兼容性和潜在 Breaking Change。 结果为说明性的 AI 文案示例,会随 diff、仓库规范和模型响应变化。
Breaking Change 与 staged diff
diff --git a/src/api/orders.ts b/src/api/orders.ts -GET /orders 返回数组 +GET /orders 返回 { data, nextCursor } +BREAKING: 客户端必须读取 data适合提醒接口响应结构变化,但必须与完整 staged diff、迁移说明、测试和仓库规范一起复核。 结果为说明性的 AI 文案示例,会随 diff、仓库规范和模型响应变化。
非 JSON AI 响应
diff --git a/src/api/client.ts b/src/api/client.ts +return response.json();页面会优先解析 title、message、summary 和 breakingChanges;后端返回普通文本时只保留首行标题,并提示人工确认 Breaking Change。 结果为说明性的 AI 文案示例,会随 diff、仓库规范和模型响应变化。
示例输出
新增按钮禁用状态
feat(button): add reactive disabled state接口错误处理调整
fix(api): throw structured errors for unsuccessful responsesBreaking Change 与 staged diff
feat(api)!: wrap order list in data envelope BREAKING CHANGE: clients must read response.data before the list.非 JSON AI 响应
普通文本响应:首行作为 title;message 保留全文;breakingChanges 提示人工确认是否存在 Breaking Change。
常见错误
- 只粘贴文件名或少量上下文时,AI 无法可靠判断提交类型和真实行为变化。
- 不要把生成的 Commit Message 当作代码审查结论,仍需确认 diff 是否包含未描述的改动。
- Breaking Change 需要结合公共 API、数据结构和配置兼容性判断,空数组不代表绝对没有风险。
- Conventional Commits 的 type、scope 和语言风格应与仓库现有提交规范保持一致。
- 生成的提交信息不能证明变更完整;提交前必须检查 staged diff、测试结果、迁移步骤和发布影响。
适用场景
- 根据 diff 生成 commit message
- Conventional Commits
- Pull Request 描述整理
- 发布前变更归纳
实操检查
验证最小 diff 校验
固定输入:`diff`(少于 10 个字符)。步骤:打开 AI Commit Message,粘贴输入并点击“生成 Commit Message”。预期结果:页面显示“请先粘贴至少 10 个字符的 git diff”,且 requestSent 不会进入已发送状态。失败判断:仍发起 `/api/ai/commit-message`,或把校验失败显示成 AI 服务故障。
验证 Breaking Change 结果
固定输入:`diff --git a/api.ts b/api.ts -GET /orders 返回数组 +GET /orders 返回 { data }`。步骤:提交并让流返回含 title、message、summary、breakingChanges 的 JSON。预期结果:页面分别显示推荐标题、完整提交信息、变更摘要和 Breaking Change 区域。失败判断:结构化字段没有映射到对应区域,或 breakingChanges 为空时没有显示“未发现 Breaking Change”。
页面专属核验
使用前与操作中
- 把 title、summary 和 Breaking Change 提醒当作基于 diff 的候选提交信息;先对照完整 staged diff、测试结果和发布影响,再决定是否采用。
- 页面会把 diff、style 和 scope 发送到 `/api/ai/commit-message`;粘贴前移除密钥、Token、Cookie、客户数据、私有 URL 和不应离开仓库的源码片段。
- 先选择 Conventional Commits、GitHub 风格、简短中文或团队规范,并确认 scope;diff 少于 10 个字符不会提交,不能用文件名片段推断完整变更。
结果出来后
- 生成的 type、scope、标题长度和正文是否符合所选规范,并准确描述 diff 中实际发生的文件与行为变化?
- Breaking Change 列表是否有 API、配置、数据或兼容性证据;空列表是否只是模型未识别,而不是自动证明没有破坏性变更?
- 提交信息、摘要和模型回显中是否没有泄露 diff 里的凭据或个人数据,并且已由人工结合测试与版本发布说明复核?
相关工具
- 文本对比:按行对比文本、配置、日志和接口响应差异
- 代码格式化:统一格式化和轻量压缩 HTML、CSS、JavaScript 代码
- AI 错误解释:AI 智能解析错误信息并提供排查方向
- Markdown 预览:Markdown 预览,并支持 Markdown 转 HTML / 纯文本
工具边界
- 模型只能概括提供的 diff,无法看到未暂存文件、测试结果、关联 Issue 或发布影响。
- Conventional Commit 类型、scope 与 Breaking Change 判断仍取决于仓库自己的规范和公共契约。
与相似工具的区别
- 文本对比:Commit Message 工具把 diff 概括为提交文案;Text Diff 逐行展示增删,不判断变更意图或提交类型。
安全与兼容性
- Diff 会发送到 AI 服务;生成前应移除密钥、真实客户数据、内部端点和不允许外发的源码。
- 提交前仍要人工检查 staged diff,确认文案没有遗漏破坏性改动、迁移步骤、安全影响或生成文件。
下一步排查
- 生成文案后先用 Text Diff 检查完整 staged diff,再按仓库规范确认 type、scope 和 Breaking Change。
- 用 Code 工具检查实现与测试,用 Markdown 工具整理发布说明或迁移文档。
- 发现行为、环境或接口错误时,转到 AI 错误、AI 环境调试或 HTTP 状态工具补充证据。
常见问题
AI 为什么漏掉了 Breaking Change?
模型可能只看到了部分 diff,或无法知道外部调用方和公共契约;应把完整 staged diff、API 兼容性、迁移步骤和发布说明一起人工检查。
type 和 scope 应该由 AI 决定吗?
AI 可以给候选值,但最终要遵循仓库自己的 Conventional Commits 配置、目录边界和历史提交风格。
可以把整个仓库 diff 都提交给 AI 吗?
不建议。只提供与本次提交相关的已脱敏 diff,先移除密钥、客户数据和内部端点,并注意输入长度和源代码外发政策。