Smart Commit
此 skill 帮助代理智能地将代码更改分批提交,符合 Git 最佳实践。
工作流程
- 获取当前更改
-
检查 git 状态:git status
-
获取完整差异:git diff (工作树)和 git diff --staged (已暂存)
-
如果有未暂存的更改,询问用户是否要先暂存
- 分析更改内容
分析文件变更,识别业务逻辑分组。常见分组维度:
-
功能模块:相同功能模块的文件分为一组
-
变更类型:
-
✨ 新功能 (feat)
-
🐛 修复 bug (fix)
-
📝 文档 (docs)
-
🎨 样式 (style)
-
♻️ 重构 (refactor)
-
⚡ 性能 (perf)
-
✅ 测试 (test)
-
🔧 构建/工具 (chore)
-
🚀 部署 (deploy)
-
文件关联:具有依赖关系的文件应放在一起
- 生成 Commit Messages
使用以下最佳实践格式:
<图标> <类型>(<范围>): <简短描述>
<详细描述(可选)>
<脚注(可选)>
常用图标与类型映射:
-
✨ feat
-
新功能
-
🐛 fix
-
修复 bug
-
📝 docs
-
文档
-
🎨 style
-
样式(不影响功能)
-
♻️ refactor
-
重构(既不是新功能也不是修复)
-
⚡ perf
-
性能优化
-
✅ test
-
测试
-
🔧 chore
-
构建过程或辅助工具变动
-
🚀 deploy
-
部署
-
💄 ui
-
UI 样式更新
- 执行分批提交
对于每个分组:
-
添加相关文件:git add <files>
-
创建提交: git commit -m "<图标> <类型>(<范围>): <描述>"
-
提交后立即显示该 commit 的摘要
- 推送到远程
所有 commit 创建完成后:
-
获取当前分支名:git branch --show-current
-
推送到远程: git push origin <branch-name>
重要约束
-
每次只处理一个分组:先确认一个分组,再处理下一个
-
用户确认:在提交每个分组前,简要说明该分组包含哪些文件的哪些更改,询问用户确认
-
不要合并不相关的更改:如果某些更改不属于任何逻辑分组,单独处理
-
原子性提交:每个 commit 应该只包含一个逻辑变更
-
清晰的描述:描述应该是简洁的、行动导向的句子
示例
假设有以下更改:
-
src/app/page.tsx
-
添加新功能组件
-
src/app/lib/utils.ts
-
添加新工具函数
-
README.md
-
更新文档
-
src/styles/globals.css
-
样式调整
分析后分组:
- 分组1:feat - src/app/page.tsx
- src/app/lib/utils.ts
-
分组2:docs - README.md
-
分组3:style - src/styles/globals.css
用户确认后依次提交并推送。