- Context Phase 5 now analyzes git diff to generate ContextEntry automatically — no longer requires manual session.log entries - session.log content merged when present but not required - .context/ missing: suggest init, don't block commit - /ccg:context log demoted to optional (for manual notes only)
4.1 KiB
4.1 KiB
description
| description |
|---|
| 智能 Git 提交:分析改动生成 Conventional Commit 信息,支持拆分建议 |
Commit - 智能 Git 提交
分析当前改动,生成 Conventional Commits 风格的提交信息。
使用方法
/commit [options]
选项
| 选项 | 说明 |
|---|---|
--no-verify |
跳过 Git 钩子 |
--all |
暂存所有改动 |
--amend |
修补上次提交 |
--signoff |
附加签名 |
--emoji |
包含 emoji 前缀 |
--scope <scope> |
指定作用域 |
--type <type> |
指定提交类型 |
执行工作流
🔍 阶段 1:仓库校验
[模式:检查]
- 验证 Git 仓库状态
- 检测 rebase/merge 冲突
- 读取当前分支/HEAD 状态
📋 阶段 2:改动检测
[模式:分析]
- 获取已暂存与未暂存改动
- 若暂存区为空:
--all→ 执行git add -A- 否则提示选择
✂️ 阶段 3:拆分建议
[模式:建议]
按以下维度聚类:
- 关注点(源代码 vs 文档/测试)
- 文件模式(不同目录/包)
- 改动类型(新增 vs 删除)
若检测到多组独立变更(>300 行 / 跨多个顶级目录),建议拆分。
✍️ 阶段 4:生成提交信息
[模式:生成]
格式:[emoji] <type>(<scope>): <subject>
- 首行 ≤ 72 字符
- 祈使语气
- 消息体:动机、实现要点、影响范围
语言:根据最近 50 次提交判断中文/英文
📦 阶段 5:Context 自动归档(若 .context/ 存在)
[模式:上下文归档]
前置判断:
- 若
.context/目录不存在 → 在提交成功后输出提示:💡 建议执行 /ccg:context init 启用决策追踪,不阻断 - 若
.context/存在 → 执行以下步骤
从 git diff 自动生成 ContextEntry:
- 获取当前分支名:
git branch --show-current - 获取暂存区变更:
git diff --cached --stat+git diff --cached(完整 diff) - 分析 diff 生成 ContextEntry:
summary:从阶段 4 生成的 commit message 中取首行decisions:分析 diff 中的关键变更(新增依赖、架构调整、接口变更、配置修改),推断决策理由bugs:若 commit type 为fix,从 diff 中提取 bug 症状、根因、修复方式changes.files:从git diff --cached --name-only提取tests:若变更包含测试文件,记录测试相关信息
- 合并 session.log(可选):若
.context/current/branches/<branch>/session.log存在且非空,将其中的手动记录合并到 decisions/bugs 中,然后清空 session.log - 脱敏:扫描 token/key/password/secret 模式 → 替换为
[REDACTED] - 追加:将 ContextEntry 作为一行追加到
.context/history/commits.jsonl - 重生成:更新
.context/history/commits.md人类视图 - 暂存:
git add .context/history/ - Trailer:在 commit message 中添加
Context-Id: <uuid>trailer
ContextEntry 格式参见 /ccg:context 命令中的 Schema 定义。
失败降级:若归档过程出错,不阻断提交。写入 minimal ContextEntry(仅 summary + files),继续正常提交。
✅ 阶段 6:执行提交
[模式:执行]
git commit [-S] [--no-verify] [-s] -F .git/COMMIT_EDITMSG
Type 与 Emoji 映射
| Emoji | Type | 说明 |
|---|---|---|
| ✨ | feat |
新增功能 |
| 🐛 | fix |
缺陷修复 |
| 📝 | docs |
文档更新 |
| 🎨 | style |
代码格式 |
| ♻️ | refactor |
重构 |
| ⚡️ | perf |
性能优化 |
| ✅ | test |
测试相关 |
| 🔧 | chore |
构建/工具 |
| 👷 | ci |
CI/CD |
| ⏪️ | revert |
回滚 |
示例
# 基本提交
/commit
# 暂存所有并提交
/commit --all
# 带 emoji 提交
/commit --emoji
# 指定类型和作用域
/commit --scope ui --type feat --emoji
# 修补上次提交
/commit --amend --signoff
关键规则
- 仅使用 Git – 不调用包管理器
- 尊重钩子 – 默认执行,
--no-verify可跳过 - 不改源码 – 只读写
.git/COMMIT_EDITMSG - 原子提交 – 一次提交只做一件事