Files
gh-junjiangao-ccode-plugins…/git-commit/REFERENCE.md
2025-11-30 08:29:56 +08:00

7.8 KiB
Raw Blame History

Git Commit 规范参考

本文档提供常见的提交信息规范、Memory 配置模板和常见问题解答。

📋 提交信息规范

Conventional Commits

最流行的提交信息规范,广泛应用于开源项目。

格式

<type>(<scope>): <subject>

<body>

<footer>

Type 类型

Type 说明 示例
feat 新功能 feat(auth): 添加用户登录功能
fix 修复 bug fix(api): 修复用户查询接口错误
docs 文档更新 docs(readme): 更新安装说明
style 代码格式(不影响功能) style(main): 统一代码缩进
refactor 重构(不改变功能) refactor(config): 简化配置加载逻辑
perf 性能优化 perf(query): 优化数据库查询性能
test 测试相关 test(user): 添加用户模块单元测试
build 构建系统或依赖 build(deps): 升级 tokio 到 1.35
ci CI 配置 ci(github): 添加自动发布工作流
chore 其他杂项 chore(release): 发布 v1.2.0
revert 回滚提交 revert: 回滚 feat(auth) 提交

Scope可选

表示影响的模块或范围:

  • api - API 接口
  • config - 配置系统
  • cli - 命令行界面
  • core - 核心逻辑
  • docs - 文档
  • test - 测试

Subject

  • 使用祈使句,现在时态:"添加"而非"添加了"
  • 首字母小写
  • 结尾不加句号
  • 简洁明了,不超过 50 字符

Body可选

  • 详细说明变更的原因和影响
  • 每行不超过 72 字符
  • 可以包含多个段落

Footer可选

  • Breaking ChangesBREAKING CHANGE: 描述
  • 关闭 IssueCloses #123, #456
  • 引用相关 PRRefs #789

完整示例

feat(config): 添加 TOML 配置支持

实现了基于 TOML 格式的配置文件读取功能,替代原有的 JSON 格式。
主要改进:
- 更友好的配置语法
- 支持注释
- 更好的类型安全

BREAKING CHANGE: 配置文件格式从 JSON 改为 TOML
Closes #42

Angular 规范

Angular 团队使用的提交规范,与 Conventional Commits 类似。

格式

<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

Type 类型

  • feat: 新功能
  • fix: 修复
  • docs: 文档
  • style: 格式
  • refactor: 重构
  • test: 测试
  • chore: 构建/工具

示例

fix(compiler): 修复模板解析错误

当模板包含特殊字符时,解析器会抛出异常。
现在正确处理所有 Unicode 字符。

Fixes #1234

简洁描述格式

适合小型项目或个人项目的简单格式。

格式

简短描述(不超过 50 字符)

可选的详细说明

示例

添加用户认证功能

实现了基于 JWT 的用户认证系统

Gitmoji 规范

使用 emoji 表示提交类型,视觉化更强。

常用 Emoji

Emoji 代码 说明
:sparkles: 新功能
🐛 :bug: 修复 bug
📝 :memo: 文档
🎨 :art: 代码格式/结构
:zap: 性能优化
🔥 :fire: 删除代码/文件
:white_check_mark: 测试
🔒 :lock: 安全修复
⬆️ :arrow_up: 升级依赖
⬇️ :arrow_down: 降级依赖

示例

✨ 添加用户登录功能
🐛 修复配置文件解析错误
📝 更新 API 文档

🔧 Memory 配置模板

Conventional Commits 配置

{
  "name": "mcp__memory__create_entities",
  "parameters": {
    "entities": [{
      "name": "project:ccode:commit-convention",
      "entityType": "convention",
      "observations": [
        "使用 Conventional Commits 格式",
        "格式:<type>(<scope>): <subject>",
        "type 包括feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert",
        "scope 为可选,表示影响的模块",
        "subject 使用中文,祈使句,首字母小写",
        "body 可选,详细说明变更原因",
        "footer 可选,包含 BREAKING CHANGE 或关闭的 Issue"
      ]
    }]
  }
}

自定义规范配置

{
  "name": "mcp__memory__create_entities",
  "parameters": {
    "entities": [{
      "name": "project:myproject:commit-convention",
      "entityType": "convention",
      "observations": [
        "格式:[模块名] 简短描述",
        "模块名使用大写,如:[API]、[UI]、[DB]",
        "描述使用中文,简洁明了",
        "示例:[API] 添加用户查询接口"
      ]
    }]
  }
}

团队规范配置

{
  "name": "mcp__memory__create_entities",
  "parameters": {
    "entities": [{
      "name": "project:teamproject:commit-convention",
      "entityType": "convention",
      "observations": [
        "使用 Jira 工单号开头",
        "格式:[PROJ-123] 描述",
        "描述使用英文,动词开头",
        "示例:[PROJ-123] Add user authentication",
        "必须关联 Jira 工单"
      ]
    }]
  }
}

常见问题

Q1: 如何修改已生成的提交信息?

A: 在技能展示提交信息并询问确认时,你可以:

你: "修改提交信息为fix(api): 修复用户查询接口超时问题"

技能会使用你提供的信息进行提交。

Q2: 如何跳过代码审查?

A: 技能默认进行简单审查。如果你确定代码没问题,可以:

你: "跳过审查,直接提交"

Q3: 如何提交部分文件?

A: 当暂存区为空时,技能会询问你选择文件。你也可以提前使用 git add

git add src/main.rs src/config.rs

然后请求提交,技能会只提交这些文件。

Q4: 提交信息太长怎么办?

A: 技能会自动将详细内容放到 body 部分:

feat(config): 添加 TOML 配置支持

- 实现 TOML 配置读取
- 添加 .env 文件支持
- 更新配置迁移逻辑
- 完善测试用例

Q5: 如何处理 Breaking Changes

A: 在 Memory 配置中说明,技能会识别重大变更并添加 footer

feat(api): 重构用户认证接口

BREAKING CHANGE: 认证接口从 /auth 改为 /api/v2/auth

Q6: 提交失败怎么办?

A: 技能会显示错误信息。常见原因:

  • pre-commit hook 失败 → 修复代码质量问题
  • 提交信息格式不符 → 检查项目的 commitlint 配置
  • Git 配置问题 → 检查 user.name 和 user.email

Q7: 如何查看提交历史?

A: 技能会自动分析最近 20 条提交。你也可以手动查看:

git log --oneline -20

Q8: 支持多语言提交信息吗?

A: 支持。技能会根据项目历史识别语言习惯:

  • 中文项目 → 生成中文提交信息
  • 英文项目 → 生成英文提交信息
  • 混合项目 → 遵循 Memory 中的配置

Q9: 如何更新项目规范?

A: 使用 Memory 工具更新:

你: "更新提交规范subject 改用英文"

技能会更新 Memory 中的配置。

Q10: 提交后发现错误怎么办?

A: 可以使用 git commit --amend 修改最后一次提交:

# 修改文件
git add .
git commit --amend

或者创建新的修复提交:

你: "提交修复"

📚 参考资源

官方文档

工具推荐

最佳实践