提交日志
少于1分钟
简要概述
用于规范项目代码提交日志,这里借鉴 Angular 规则,规范化的提交记录,有以下好处:
- 快速查找历史变更信息;
- 自动化生成 CHANGELOG.md 文档;
提交规范
各个 git commit
提交记录,由:header、body、footer 三部分组成,格式如下:
<header>
// 空一行
<body>
// 空一行
<footer>
其中 header 是强制填写,由以下三部分组成:
<type>(<scope>): <short summary>
│ │ │
│ │ └─⫸ 本次变更内容的一句话总结,中文或小写英文,末尾不带句号
│ │
│ └─⫸ 涉及变更的主要模块,如:cli|pkg|api
│
└─⫸ 本次提交功能变更的类型,如:feat|fix|docs|perf|refactor|test
参数详解
header
- type
type | 说明 |
---|---|
feat | 涉及业务代码变更,添加新功能 |
fix | 涉及业务代码变更,修复已知BUG |
perf | 涉及业务代码变更,优化功能性能、体验等 |
refactor | 涉及业务代码变更,但不属于 feat 、fix 、perf 的类型 |
ci | 仅涉及流水线变更,如:gitlab-ci、github action 的 yaml 文件 |
docs | 仅涉及文档类变更,如:README.md 或 代码注释 等 |
release | 仅涉及版本号变更,如:VERSION、CHANGELOG.md 中关联的值 |
test | 仅涉及测试代码变更,如:hello_test.go |
build | 仅涉及构建编译依赖的组件版本等变更,如:go.mod |
chore | 其他琐碎的变更,但对代码功能没有影响,比如删除了无用的代码、注释等清理操作 |
- scope
代码变更的模块,如:cli、pkg、api 等,这块为可选,非必填内容。
- summary
编写一个具有概括性简短的描述
- 不超过 50 个字符
- 可选择编写中文或英文
- 英文统一小写,首字母不大写
- 英文专业术语除外,如:Makefile
- 末尾不带任何标点符号
示例:
feat(cli): 在 Makefile 中添加容器化构建应用
release: cut the 0.2.4-beta.1
docs: release notes for the 0.2.4-beta.1
body
解释此次变更的详细描述,可由多行组成,格式准守 “Markdown” 语法。
footer
仅在两种情况下才会使用:
- 不兼容的更改
如果当前代码提交之后,会对上一个版本不兼容,则必须以 BREAKING CHANGE
开头,后面在添加详细描述。
BREAKING CHANGE: <breaking change summary>
<BLANK LINE>
<breaking change description + migration instructions>
<BLANK LINE>
<BLANK LINE>
Fixes #<issue number>
- 关闭 issue
如果当前提交是针对某个 “issue”,那么可以以 Closes #
加问题编号。
- 已经废弃的功能
DEPRECATED: <what is deprecated>
<BLANK LINE>
<deprecation description + recommended update path>
<BLANK LINE>
<BLANK LINE>
Closes #<pr number>
相关示例
查看历史变更记录
git log HEAD --pretty=format:%s
最后修改 12.02.2023: feat: 添加配置规范文档结构 (781e64c)