| name | auto-commit |
| description | 自动化 Git 提交和推送工具。智能分析代码变更,生成符合规范的 commit message,并执行提交和推送操作。当用户需要提交代码、推送改动、创建 git commit 时使用。适用于完成功能开发、修复 bug、代码重构、中途备份等场景。 |
自动提交工具(Auto Commit)
自动化 Git 提交流程,智能生成 commit message 并推送到远程仓库。
⚠️ 重要使用规范
仅在用户明确要求时才执行提交操作,绝不擅自提交代码。
何时使用此 skill
✅ 应该使用(用户有明确的提交意图):
- 用户说:"提交代码"、"推送代码"、"commit 并 push"
- 用户说:"帮我提交一下"、"把改动 commit 一下"
- 用户说:"推送到仓库"、"提交到 git"
- 用户在完成功能后明确表示要提交
❌ 不应该使用(没有明确的提交指令):
- 用户只是让你修改文件、添加功能、修复 bug
- 用户说"优化一下"、"改进一下"、"帮我改改"
- 你完成修改后,除非用户明确要求,否则不要自动提交
- 测试完功能后,不要主动提交
正确的工作流程
- 用户请求修改功能 → 你修改文件 → 告诉用户修改完成 → 停止,等待指令
- 用户明确说"提交" → 你才调用此 skill 执行提交
错误示例
❌ 用户:"帮我添加一个功能"
AI:修改文件 → 自动提交 → 自动推送 (错误!用户没让你提交)
✅ 用户:"帮我添加一个功能"
AI:修改文件 → "功能已添加完成,是否需要提交?"
用户:"提交吧"
AI:调用 skill 提交推送 (正确!)
原则:代码控制权在用户手中,AI 不应擅自做主。
快速开始
当用户表达需要提交代码时(例如"帮我提交一下代码"、"把这次的改动 commit 一下"、"推送到仓库"等),执行:
cd <项目目录>
python3 scripts/commit_and_push.py
脚本会自动:
- 检查 git 状态并暂存变更
- 分析变更内容生成 commit message
- 显示 message 并等待用户确认
- 用户可以选择:使用/取消/编辑 message
- 执行 commit 和 push
重要:默认会要求用户确认 message。如需跳过确认(AI 自动调用),使用 --no-confirm 参数
工作流程
标准提交流程
- 确认用户意图:判断是否需要提交代码
- 执行脚本:运行
python3 scripts/commit_and_push.py
- 确认结果:检查提交和推送是否成功
自定义 Commit Message
如果用户指定了 message:
python3 scripts/commit_and_push.py -m "feat(api): 添加用户认证接口"
仅提交不推送
如果用户只想提交到本地:
python3 scripts/commit_and_push.py --no-push
只生成 Message
如果只需要查看生成的 message:
python3 scripts/generate_commit.py
跳过确认(自动化场景)
如果在 AI 自动化场景下需要跳过确认:
python3 scripts/commit_and_push.py --no-confirm
Commit Message 规范
生成的 message 遵循 Gitmoji + Conventional Commits 格式:<emoji> <类型>(<作用域>): <简短描述>
提交类型与 Emoji
✨ feat: 新功能
🐛 fix: Bug 修复
♻️ refactor: 代码重构
📝 docs: 文档更新
🎨 style: 代码格式调整
✅ test: 测试相关
🔧 chore: 日常维护
⚡️ perf: 性能优化
🚀 deploy: 部署/发布
💄 ui: UI/样式文件
作用域
根据文件类型自动推断:docs, test, config, scripts, frontend, backend
示例
✨ feat(api): 添加用户认证接口
- 新增 2 个文件
- 实现 JWT token 生成和验证
- 添加登录和注销端点
🐛 fix(ui): 修复登录页面样式问题
- 修改 1 个文件
- 调整按钮对齐方式
📝 docs: 更新 API 使用文档
- 修改 1 个文件
- 添加新接口的说明
更多示例和详细规范见 commit-guidelines.md。
使用场景
场景 1:完成功能后提交
用户说:"这个功能做完了,帮我提交一下"
操作:python3 scripts/commit_and_push.py
场景 2:修复 Bug
用户说:"bug 修好了,commit 一下"
操作:python3 scripts/commit_and_push.py
场景 3:指定 Message
用户说:"帮我提交,message 写'修复登录页面的样式问题'"
操作:python3 scripts/commit_and_push.py -m "fix(ui): 修复登录页面的样式问题"
场景 4:只提交不推送
用户说:"先提交到本地,不要 push"
操作:python3 scripts/commit_and_push.py --no-push
脚本说明
generate_commit.py
分析代码变更并生成 commit message。
功能:
- 检查 git 状态,获取已暂存的文件列表
- 获取变更内容(git diff)
- 分析变更类型(新增、修改、删除)
- 根据文件类型推断作用域
- 根据变更内容和关键词判断提交类型
- 生成结构化的 commit message
使用:
python3 scripts/generate_commit.py
commit_and_push.py
执行完整的提交和推送流程。
参数:
-m, --message <msg>: 自定义 commit message
--no-push: 只提交不推送
--stage-all: 自动暂存所有变更
--no-confirm: 跳过确认,直接提交(用于自动化)
使用:
python3 scripts/commit_and_push.py
python3 scripts/commit_and_push.py -m "feat: 添加新功能"
python3 scripts/commit_and_push.py --no-push
工作流程:
- 检查是否在 git 仓库中
- 检查是否有已暂存的变更,没有则自动暂存
- 生成或使用提供的 commit message
- 等待用户确认(可以 Y 确认、n 取消、e 编辑)
- 执行 git commit
- 如果未禁用,执行 git push
错误处理
不在 Git 仓库中
脚本会报错,需要先进入正确的项目目录。
没有变更
脚本会提示"没有要提交的变更",这是正常的。
推送失败
常见原因:网络问题、远程仓库未配置、需要先拉取更新。
如果推送失败,可能需要:
- 检查网络连接
- 执行
git pull 合并远程更新
- 检查远程仓库配置
冲突处理
如果远程仓库有新的提交:
git pull --rebase
python3 scripts/commit_and_push.py
最佳实践
- 小步提交:每完成一个小功能就提交,保持提交粒度适中
- 清晰描述:如果自动生成的不够准确,可以手动指定
- 及时推送:建议每次提交后都推送到远程
- 查看变更:提交前可以先让 AI 总结一下改动内容
- 处理冲突:遇到推送冲突时,先拉取远程更新并解决冲突
相关资源
- 详细规范:commit-guidelines.md - Commit message 完整规范和示例
- 脚本源码:
scripts/generate_commit.py - Message 生成脚本
scripts/commit_and_push.py - 提交和推送脚本