为什么需要制定提交规范

为什么需要制定提交规范,简单总结如下:

  • 让之后的项目维护者了解代码出现特定变化和添加feature的原因
  • 方便code review
  • 清晰的历史记录,方便快速浏览查找,回溯之前的工作内容
  • 规范的提交记录可用于自动生成版本发布日志(CHANGELOG.MD)
  • 基于提交类型,触发构建和部署流程

怎么制定提交规范

Conventional Commits是目前使用最广泛的提交信息规范,其主要受 AngularJS规范 的启发

commit 格式如下

<type>[scope]: <subject>
//空一行
[optional body]
//空一行
[optional footer(s)]

规范说明

# 主要type
feat: 增加新功能
fix: 修复bug

# 特殊type
docs: 只改动了文档相关的内容
style: 代码格式化相关的改动,例如去掉空格、改变缩进、增删分号,不改变代码逻辑
refactor: 代码重构时使用,没有添加新功能或者修复bug
perf: 提高性能的改动
chore: 构造工具的改动,改变构建流程、增加依赖库、工具等,例如webpack,npm

# 暂不使用type
test: 添加测试用例或者修改现有测试用例
revert: 回退,撤销上一次的 commit
ci: 与CI(持续集成服务)有关的改动

如何约束规范

怎么确保每个提交都能符合规范呢,最好的方式就是通过工具来生成和校验;

  • commitizen是一个nodejs命令行工具,通过交互的方式,生成符合规范的git commit;
  • conventional-changelog是一款可以根据项目的commit 和 metadata信息自动生成 changelogs 和 release notes的系列工具;
  • standard-version可以自动帮你完成生成version、打tag, 生成CHANGELOG等系列过程;

commitizen

是一个撰写合格 Commit message 的工具。

格式校验commitlint

使用commitlinthusky来进行提交检查,当执行git commit时会在对应的git钩子上做校验,只有符合格式的Commit message才能提交成功。

生成Change log 的工具

conventional-changelog

自动版本管理和生成CHANGELOG

standard-version一个用于生成CHANGELOG.md和进行SemVer(语义化版本号)发版的命令行工具,主要功能:

  • 自动修改最新版本号,可以是package.json或者自定义一个文件
  • 读取最新版本号,创建一个最新的git tag
  • 根据提交信息,生成CHANGELOG.md
  • 创建一个新提交包括 CHANGELOG.mdpackage.json

参考

规范GIT代码提交信息&自动化版本管理
Commit message 和 Change log 编写指南


dragonishare
157 声望3 粉丝