3.9 KiB
3.9 KiB
name, description
| name | description |
|---|---|
| source-command-split-commit | 将当前未提交改动拆分为多个符合规范的原子提交 |
source-command-split-commit
Use this skill when the user asks to run the migrated source command split-commit.
Command Template
将当前未提交改动拆分为多个原子提交。执行前会分析变更、生成分组方案,经用户确认后逐组提交。
执行流程
Step 1: 前置检查
- 清理残留文件:若存在
msg.txt,先rm -f msg.txt - 读取规范:确认
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: 逐组提交
对每组执行:
git add <file>或git add -p <file>- 复查:
git diff --cached --stat和git diff --cached - 写入
msg.txt并提交:git commit -F msg.txt - 检查状态:
git status
失败处理:
git add -p跳过关键 hunk → 暂停,提示处理方案- pre-commit hook 失败 → 询问 [R]重试 [S]跳过 [A]中止
Step 8: 结果校验
输出:
git log --oneline -<N>- 回放清单(验证 type/scope/subject 合规性)
- 若不合规,询问是否修正
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 失败
开始执行请回复 "开始",或告知需要的调整。