乐趣区

关于git:工程化之Git代码提交规范

为什么须要制订提交标准

为什么须要制订提交标准,简略总结如下:

  • 让之后的我的项目维护者理解代码呈现特定变动和增加 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 编写指南

退出移动版