Conventional Commit提交规范
说明
在Git规范中,提交信息(commit message)通常按照某个约定来编写,以提供更多上下文,帮助团队成员理解每次提交的目的。一种广泛使用的约定是Conventional Commits
规范,它推荐的提交信息格式如下:
<type>[optional scope]: <description>[optional body][optional footer(s)]
其中,<type>
字段表明了提交的类别,用以告知团队这次提交改变了代码库的哪一部分或做了什么类型的更改。常见的type
类别包括:
-
feat
:表示实现了一个新的特性(feature)。例如,添加了一个新的按钮或新功能。 -
fix
:表示修复了一个bug。例如,修复了导致程序崩溃的错误。 -
docs
:文档的改动。例如更新了README文件。 -
style
:代码样式的改动,注意这并不影响代码运行的逻辑。 -
refactor
:代码重构。既没有新增功能,也没有修复bug。 -
perf
:性能提升相关的代码改动。 -
test
:增添测试或修正现有的测试。 -
chore
:对构造过程或辅助工具和库的更改(不影响源文件、测试案例)。 -
ci
:持续集成相关的改动。 -
build
:影响构建系统或外部依赖关系的修改,例如gulp、webpack、npm的配置文件。 -
revert
:撤销前一次提交。
需要注意的事项:
-
提交信息要清晰、简洁,尽可能在第一行就概括这次提交的主旨。
-
<type>
字段要小写,并且与冒号之间要有空格。 -
针对
feat
和fix
类型的提交,它们经常出现在版本更迭时,因此要确保描述足够明了,以便自动生成CHANGELOG。 -
当提交随着时间累积变得太多,遵循规范的提交信息使得团队成员易于追踪和理解代码变动历史。
-
如果需要,可以加上作用域(
scope
)来提供额外的上下文,例如针对某个特定模块或组件的更改。 -
可以使用工具来强制实施提交消息规范,比如
commitlint
和husky
。 -
后续追查问题时,根据规范编写的提交信息可以快速定位相关的更改。
通过遵守一个统一的提交信息写作规范,整个团队将获益于更加有组织、可读性更高的项目历史记录。
示例
以下是根据Conventional Commits规范,每种<type>
的提交信息示例:
-
feat
(特性):git commit -m "feat(authentication): add JWT token service"
这个提交信息告诉我们添加了一个新的JWT令牌服务。
-
fix
(修复):git commit -m "fix(login): resolve issue where session expires prematurely"
表示修复了一个在登录模块中会导致会话过早到期的问题。
-
docs
(文档):git commit -m "docs(readme): update installation instructions"
更新了安装说明部分的README文件。
-
style
(样式):git commit -m "style: format code with prettier"
使用Prettier格式化代码样式,没有改变代码逻辑。
-
refactor
(重构):git commit -m "refactor(store): simplify state management logic"
简化了状态管理逻辑。
-
perf
(性能):git commit -m "perf(image-loader): improve image loading speed by 50%"
提高了图像加载速度50%。
-
test
(测试):git commit -m "test(api): add tests for user service"
为用户服务添加测试案例。
-
chore
(琐事):git commit -m "chore: update package.json dependencies"
更新了package.json文件中的依赖信息。
-
ci
(持续集成):git commit -m "ci: add lint stage to CI pipeline"
在CI流水线中增加代码lint检查阶段。
-
build
(构建):git commit -m "build(webpack): add sourcemap support for development build"
为开发构建添加了源码映射(sourcemap)支持。
-
revert
(回滚):git commit -m "revert: feat(pagination): custom pagination component"
回滚之前添加的自定义分页组件特性。
这些是按照Conventional Commits规范编写的提交信息示例,让你的团队和后来者更容易理解代码库历史。请注意替换括号内具体描述为你自己的实际情况。