Conventional Commits v1.0.0 分支、工作树命名及提交信息规范,适用于 GitHub 与 GitLab 项目,用于创建分支和命名工作树等场景。
常规提交和分支命名是一项面向实际任务的技能,主要用于既针对分支名称又针对承诺消息遵循常规提交 v1. 0.0 —— 一致命名让工具自动生成变换日志, 强制执行 SemVer 缓冲。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
分支名称和提交信息均须遵循 Conventional Commits v1.0.0 规范 —— 统一的命名方式可使工具自动生成功能变更日志(changelog)、强制执行语义化版本(SemVer)升级策略,并按关注点(concern)筛选提交历史。
格式: —— 全小写,仅使用短横线(-)分隔单词,除斜杠(/)外不得包含其他特殊字符。
feat/user-authentication
feat/42-user-authentication
fix/login-race-condition
fix/87-login-race-condition
docs/api-reference-update
refactor/payment-module
若存在对应 issue,则应在分支名前缀中加入 issue 编号 —— GitHub 与 GitLab 会自动将其链接至 issue 系统,且能使 git log 输出立即追溯到问题追踪器。描述部分应控制在 50 个字符以内 —— 大多数 Git 图形界面在列表中显示分支名时即在此长度附近截断。请确保 type 准确反映当前工作内容 —— 这是读者快速理解分支意图的核心契约。
严禁 在分支名中包含 worktree —— Git worktree 是一种本地检出机制,不属于分支概念;将其混入分支名会将实现细节泄露至远程仓库,干扰其他协作者的理解。
Worktree 是本地检出目录,永远不会出现在远程仓库中。请统一将其置于 .claude/worktrees/ 目录下,并将分支名中的斜杠(/)替换为短横线(-)作为 worktree 目录名。
git worktree add .claude/worktrees/feat-user-authentication feat/user-authentication
git worktree add .claude/worktrees/fix-87-login-race-condition fix/87-login-race-condition
目录名与分支名保持镜像关系,以确保 git worktree list 输出清晰可读,且每个 worktree 可不依赖检出状态而直接追溯至其所属分支。创建新 worktree 前,请先运行 git worktree list —— 若已有 worktree 已覆盖相同分支,请复用该 worktree。
每个 worktree 应严格限定于单一分支。在他人 worktree 中开展无关工作,将导致变更归属模糊、清理操作易出错。
分支合并后请立即移除对应 worktree —— 可在本地完成合并后执行,也可在远程 Pull Request / Merge Request 关闭后执行。残留的 stale worktree 将不断累积,最终导致 git worktree list 输出难以阅读。
git worktree remove .claude/worktrees/feat-user-authentication # 分支已在本地合并
git worktree prune # 清理已删除目录的引用
[optional scope]:
[optional body]
[optional footer(s)]
类型(Types):
| 类型 | SemVer | 适用场景 |
|---|---|---|
feat |
MINOR | 新增功能 |
fix |
PATCH | 修复缺陷(bug) |
docs |
— | 仅修改文档 |
style |
— | 代码格式调整(无逻辑变更) |
refactor |
— | 代码重构(不涉及功能或缺陷修复) |
perf |
— | 性能优化 |
test |
— | 新增或修复测试 |
build |
— | 构建系统、依赖项相关变更 |
ci |
— | CI 配置变更 |
chore |
— | 其他杂项任务(非源码/测试文件变更) |
revert |
— | 回退某次先前提交 |
规则:
add 而非 added —— 表达为指令而非历史记录!,或在 footer 中添加 BREAKING CHANGE:(二者均触发 MAJOR 版本升级)—— 仅在正文中描述破坏性变更将无法被 changelog 工具识别revert 类提交 必须 在正文中包含 This reverts commit . —— git revert 命令自动生成此行,请勿手动删除Co-authored-by trailer示例:
feat(auth): add JWT token refresh
fix: prevent race condition on concurrent requests
Introduce request ID and reference to latest request.
Dismiss responses from stale requests.
refactor!: drop support for Go 1.18
BREAKING CHANGE: Go 1.18 no longer supported; uses stdlib APIs from 1.21+
GitHub 与 GitLab 均支持识别提交信息中的关键词,并在该提交落地至默认分支(default branch)时自动关闭所引用的 issue。建议将 issue 引用置于 footer 区域(更优实践 —— 保持主题行简洁)。
关键词(不区分大小写): close、closes、closed、fix、fixes、fixed、resolve、resolves、resolved
GitHub:
fix(auth): prevent token expiry race condition
Closes #42
Closes owner/repo#99
main)时触发Closes owner/repo#42Closes #42, closes #43GitLab:
feat: add dark mode support
Resolves #101
Closes group/project#42
Closes group/project#42Closes #101, closes #102提示: 提交类型应与 issue 类型匹配 —— 如 fix: 用于关闭缺陷类 issue,feat: 用于关闭功能需求类 issue —— 此举可保障生成的 changelog 语义连贯、逻辑清晰。
| 错误示例 | 修正方式 |
|---|---|
feat: Added login page |
feat: add login page —— 使用祈使语气,首字母小写 |
fix: fix bug. |
fix: fix bug —— 删除末尾句号 |
| 主题行超过 72 字符 | 精简主题行;细节移至正文(body) |
| 破坏性变更仅在正文中描述 | 添加 ! 或 BREAKING CHANGE: footer —— 仅靠正文描述无法被工具识别 |
feat(adding-auth): ... |
feat(auth): ... —— scope 应为名词,而非动词 |
| Closes #42 出现在主题行中 | 移至 footer —— 保证主题行简洁、可解析 |
feat/auth-* 分支 → 对应提交应为 feat(auth):feat(auth):,避免中途改为 feat(user):