Files
aibis-dream/.claude/commands/split-commit.md
T

3.8 KiB
Raw Blame History

name, description
name description
split-commit 将当前未提交改动拆分为多个符合规范的原子提交

将当前未提交改动拆分为多个原子提交。执行前会分析变更、生成分组方案,经用户确认后逐组提交。

执行流程

Step 1: 前置检查

  1. 清理残留文件:若存在 msg.txt,先 rm -f msg.txt
  2. 读取规范:确认 COMMIT_CONVENTION.md 存在且可读

Step 2: 保护分支检查

保护分支列表(按优先级):AGENTS.md > .cursor/rules/ > .git/config branch.protected > 默认(master|main|develop)

若当前在保护分支,询问用户:

  • A - 创建 feature 分支后继续拆分(推荐)
  • B - 转移到新分支后压成单提交
  • C - 取消

Step 3: 盘点变更

执行以下命令分析:

  • git status - 整体状态
  • git diff --stat - 文件统计
  • git diff - 详细改动
  • git diff --cached - 已暂存改动

Step 4: 规则化分组

按"意图一致"原则分组,优先按 type 分,再按 scope 分

必须拆分的情况

  • 同一组可归属多个 type
  • 同文件包含多个独立目的(如功能+重构)
  • 资源替换与代码逻辑混合

可以合并的情况(最小拆分原则):

  • 同一功能的多文件改动(脚本+Prefab)
  • 同一模块的多个相关 Bug 修复

Step 5: 生成方案表格

以表格形式展示拆分方案:

顺序 文件 变更目的 提交头 依据 方式
1 路径 描述 type(scope): subject 原因 git add/git add -p

Type 选择优先级fix > feat > art > audio > scene > yarn > perf|refactor|...

Scope 规则:单模块用模块名(如 blockpuzzle),跨模块省略。

Step 6: 用户确认

询问:[Y 执行 / n 取消 / 提出调整]

  • 若调整:根据反馈修改方案,再次确认
  • 若执行:进入 Step 7
  • 若取消:清理并退出

Step 7: 逐组提交

对每组执行:

  1. git add <file>git add -p <file>
  2. 复查:git diff --cached --statgit diff --cached
  3. 写入 msg.txt 并提交:git commit -F msg.txt
  4. 检查状态:git status

失败处理

  • git add -p 跳过关键 hunk → 暂停,提示处理方案
  • pre-commit hook 失败 → 询问 [R]重试 [S]跳过 [A]中止

Step 8: 结果校验

输出:

  1. git log --oneline -<N>
  2. 回放清单(验证 type/scope/subject 合规性)
  3. 若不合规,询问是否修正

Step 9: 清理

rm -f msg.txt


Unity 改动速查表

改动类型 type scope 示例
脚本逻辑修复 fix blockpuzzle, dialog
脚本新功能 feat huoshan, clue
美术资源(贴图/模型/动画) art 对应模块或省略
音频资源 audio audio-kit 或省略
场景配置(灯光/镜头) scene 对应模块或省略
Yarn 对话 yarn dialog
测试代码 test 对应模块

规范校验清单(执行前检查)

  • 格式:<type>(<scope>): <subject><type>: <subject>
  • type ∈ {feat,fix,art,audio,scene,yarn,perf,refactor,style,docs,build,chore,test}
  • subject:中文、动词开头、≤50字、无句号
  • 一次提交只做一件事

中文提交方法

由于 PowerShell 中文乱码问题,统一使用文件方式:

echo "type(scope): 描述" > msg.txt
git commit -F msg.txt
rm -f msg.txt

关于 Pre-commit Hooks

若配置了 husky/lint-staged

  • 每次提交都会触发检查
  • 如需跳过(不推荐):git commit -F msg.txt --no-verify
  • 跳过可能导致 CI 失败

开始执行请回复 "开始",或告知需要的调整。