提交日志

简要概述

用于规范项目代码提交日志,这里借鉴 Angular 规则,规范化的提交记录,有以下好处:

  1. 快速查找历史变更信息;
  2. 自动化生成 CHANGELOG.md 文档;

提交规范

各个 git commit 提交记录,由:header、body、footer 三部分组成,格式如下:

<header>
// 空一行
<body>
// 空一行
<footer>

其中 header 是强制填写,由以下三部分组成:

<type>(<scope>): <short summary>
  │       │             │
  │       │             └─⫸ 本次变更内容的一句话总结,中文或小写英文,末尾不带句号
  │       │
  │       └─⫸ 涉及变更的主要模块,如:cli|pkg|api
  └─⫸ 本次提交功能变更的类型,如:feat|fix|docs|perf|refactor|test

参数详解

  • type
type 说明
feat 涉及业务代码变更,添加新功能
fix 涉及业务代码变更,修复已知BUG
perf 涉及业务代码变更,优化功能性能、体验等
refactor 涉及业务代码变更,但不属于 featfixperf 的类型
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

编写一个具有概括性简短的描述

  1. 不超过 50 个字符
  2. 可选择编写中文或英文
  3. 英文统一小写,首字母不大写
  4. 英文专业术语除外,如:Makefile
  5. 末尾不带任何标点符号

示例:

feat(cli): 在 Makefile 中添加容器化构建应用
release: cut the 0.2.4-beta.1
docs: release notes for the 0.2.4-beta.1

body

解释此次变更的详细描述,可由多行组成,格式准守 “Markdown” 语法。

仅在两种情况下才会使用:

  • 不兼容的更改

如果当前代码提交之后,会对上一个版本不兼容,则必须以 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