Conventional Commits v1.0.0 分支、工作树命名及提交信息规范,适用于 GitHub 与 GitLab 项目,用于创建分支和命名工作树等场景。
常规提交和分支命名
功能概述
常规提交和分支命名是一项面向实际任务的技能,主要用于既针对分支名称又针对承诺消息遵循常规提交 v1. 0.0 —— 一致命名让工具自动生成变换日志, 强制执行 SemVer 缓冲。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
核心要点
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
- 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
使用与执行
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
结果检查与注意事项
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
约定式提交(Conventional Commits)与分支命名规范
分支名称和提交信息均须遵循 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 命名
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 |
— | 回退某次先前提交 |
规则:
- 主题行(subject line)长度 ≤ 72 字符 —— Git 日志及 GitHub/GitLab UI 会静默截断超长主题行
- 使用祈使语气(imperative mood):写
add而非added—— 表达为指令而非历史记录 - 首字母不需大写,末尾不加句号 —— 确保变更日志(changelog)工具可统一解析
- 正文(body)须与主题行空一行分隔 —— 解析器依据首个空行切分 header/body
- 破坏性变更(breaking changes):可在 type/scope 后添加
!,或在 footer 中添加BREAKING CHANGE:(二者均触发 MAJOR 版本升级)—— 仅在正文中描述破坏性变更将无法被 changelog 工具识别 revert类提交 必须 在正文中包含This reverts commit——. git revert命令自动生成此行,请勿手动删除- 严禁 在提交信息中添加 Claude 签名、AI 代理署名,或为 Claude 或任何其他 AI 代理添加
Co-authored-bytrailer
示例:
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+
通过提交信息关闭 Issue
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#42 - 批量关闭:
Closes #42, closes #43 - 同样适用于 PR 描述(PR description)
GitLab:
feat: add dark mode support
Resolves #101
Closes group/project#42
- 仅当合并至 默认分支(各项目可单独配置)时触发
- 跨项目引用:
Closes group/project#42 - 批量关闭:
Closes #101, closes #102 - 同样适用于 MR 描述(MR description)
提示: 提交类型应与 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): - 每一分支聚焦单一关注点 —— 在功能分支中混入修复类变更将导致 changelog 混乱难读
- 在单一分支内保持 scope 使用一致性 —— 如全程使用
feat(auth):,避免中途改为feat(user): - 合并且压缩(Squash merge): 当对 PR/MR 执行 squash merge 时,该分支所有提交将被压缩为一条;此时 PR/MR 标题即成为最终提交信息。若标题未遵循 Conventional Commits 格式,changelog 生成将静默失败。因此,请务必在执行 squash 操作前设置好 PR 标题。
热门AI工具
相关专题
要对比两个版本的 git 文件,请使用 git diff 命令:git diff 比较工作树和暂存区之间的差异。git diff 比较两个提交或标签之间的差异。git diff 输出显示差异块,其中 + 表示添加的行,- 表示删除的行, 表示修改的行。可使用 gitkraken、meld、beyond compare 等可视化工具更直观地查看差异。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。
2281
2024.04.09
git提交错误撤回的方法:git reset head^:撤回最后一次提交,恢复到提交前状态。git revert head:创建新提交,内容与之前提交相反。git reset :使用提交的 sha-1 哈希撤回指定提交。交互式舞台区:标记要撤回的特定更改,然后提交,排除已撤回更改。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。
2517
2024.04.09
Git是一个强大的版本控制系统,它提供了很多功能帮助开发人员有效地管理和控制代码的变更,本专题为大家提供git 撤销提交的commit相关的各种文章内容,供大家免费下载体验。
714
2023.07.24
git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。
1260
2023.07.06
本专题汇总了Vibeknow在线创作视频的官方入口及网页版使用教程,涵盖PPT、PDF、Word等文档一键转讲解视频的核心操作,并整理了免费版水印规则与手机端浏览器访问指南,助你快速将知识内容视频化。
0
2026.09.21
本专题整理 NumPy 随机数、文件读写与 dtype 数据类型相关教程,覆盖 Generator/random、随机数种子、正态分布采样、npy/npz/CSV/TXT 保存读取、loadtxt/savetxt、memmap、大文件处理、astype 类型转换、结构化 dtype、整数溢出和精度丢失等场景。
0
2026.09.21
本专题整理 NumPy 矩阵运算与线性代数计算相关教程,覆盖矩阵乘法、dot 与 @ 运算符、逆矩阵、行列式、特征值与特征向量、SVD、线性方程组、欧氏距离、矩阵分解和大规模矩阵性能优化等内容,帮助读者掌握 np.linalg 与矩阵计算实战。
0
2026.09.21
本专题整理 NumPy 广播机制、数组数学运算与统计分析相关教程,覆盖广播规则、维度对齐、矩阵与数组加减除法、向量化计算、均值方差、分位数、中位数、直方图和 unique 频次统计等场景,帮助读者掌握 ndarray 高效计算与统计处理方法。
0
2026.09.21
热门下载
相关下载
最新文章
