名称: 提交 描述: 创建一个遵循COMMIT_GUIDELINES.md的提交 参数提示: [可选消息提示] 允许的工具: Bash, Read, Grep
提交更改
创建一个遵循项目COMMIT_GUIDELINES.md的格式良好的提交。
指令
-
阅读COMMIT_GUIDELINES.md 获取所有格式规则、提交类型和约定
-
检查状态
- 运行
git status查看已暂存和未暂存的更改 - 运行
git diff --cached查看将要提交的内容 - 如果没有暂存任何内容,询问用户要暂存什么,或使用
git add -A暂存所有
- 运行
-
分析更改
- 审查差异以理解更改内容
- 根据COMMIT_GUIDELINES.md识别适当的提交类型和范围
- 根据更改的目的选择类型,而不是文件扩展名 — 使用下面的决策指南
-
编写提交消息 遵循COMMIT_GUIDELINES.md规则
-
创建提交 使用HEREDOC格式进行适当格式化:
git commit -m "$(cat <<'EOF' <type>(<scope>): <subject> <body> <footer> EOF )" -
验证 — 运行
git log -1检查消息
提交类型决策指南
根据更改的目的选择类型,而不是文件类型:
| 类型 | 使用时机… | 示例 |
|---|---|---|
| feat | 添加新的面向用户的功能 | 新的CLI命令、新标志、新配置选项 |
| fix | 修复面向用户的错误 | 错误的合并行为、错误的退出代码 |
| refactor | 重构代码而不改变行为 | 提取助手函数、重命名内部函数 |
| test | 添加/修复测试(即使修复测试中的错误) | 新的测试案例、修复不稳定的测试 |
| docs | 更改面向用户的文档内容 | 更新README、手册页、ARCHITECTURE.md |
| ci | 更改CI/CD、自动化、审查工具、GitHub配置 | 工作流程、Copilot/Claude指令、技能、.github/配置 |
| build | 更改构建系统或依赖项 | go.mod、构建脚本、Makefile |
| style | 仅代码格式化,无逻辑更改 | go fmt、空格修复 |
| chore | 不适合上述的维护工作 | 更新.gitignore、工具配置 |
常见陷阱
.md文件不总是docs— 配置工具行为的Markdown文件(例如,Copilot指令、Claude技能、审查标准)是ci,而不是docsfix仅用于面向用户的错误 — 修复CI工作流程是ci,修复测试是test,修复构建脚本是buildtest也覆盖测试修复 — 在纠正测试代码时使用test:而不是fix:
硬换行技术
当指南指定硬换行限制时,首先将文本写成连续的流畅散文,然后在指定字符限制处硬换行,尽可能接近限制地填充每行。
示例
git commit -m "$(cat <<'EOF'
feat(finish): 添加压缩合并策略
实现finish命令的--squash标志,执行压缩合并
而不是常规合并,在目标分支上创建一个包含所有分支更改的单一提交。
- 添加压缩选项到合并策略枚举
- 更新finish命令以处理squash标志
- 添加默认压缩行为的配置支持
解决 #42
EOF
)"