如何规范 Git 提交

2021-03-08 09:42:00
子弈
转贴:
掘金
2064
摘要:规范 Git 提交有利于团队协作、定位 bug 位置、寻找功能代码,而且规范的提交可以通过工具生成CHANGELOG.md文件,从而方便开发者或用户追踪项目的开发信息和功能特性。

概要

规范 Git 提交有利于团队协作、定位 bug 位置、寻找功能代码,而且规范的提交可以通过工具生成CHANGELOG.md文件,从而方便开发者或用户追踪项目的开发信息和功能特性。


本文值得思考的三个内容:

  • 如何规范 git 提交信息,以什么样的规范去约束?
  • 如何对用户的提交信息做出校验?
  • 如何生成CHANGELOG.md文件

规范 Git 提交的实践步骤

1、初始化项目并安装依赖

// 首先从一个空的 git 项目开始
yarn init -y
// 安装 commitizen
sudo yarn global add commitizen
// 安装 @commitlint/cli
yarn add @commitlint/cli -D
// 安装 @commitlint/config-conventional
yarn add @commitlint/config-conventional -D
// 安装 conventional-changelog
yarn add conventional-changelog -D
// 安装 conventional-changelog-cli
yarn add conventional-changelog-cli -D
// 安装 cz-conventional-changelog
yarn add cz-conventional-changelog -D
// 安装 husky
yarn add husky@4.2.5 -D
// 安装 rimraf
yarn add rimraf -D 
                    复制代码

2、修改 package.json

修改 package.json,增加如下代码

                    "config": { 
                    "commitizen": { 
                    "path": 
                    "./node_modules/cz-conventional-changelog" }
  }, 
                    "husky": { 
                    "hooks": { 
                    "commit-msg": 
                    "commitlint -E HUSKY_GIT_PARAMS" }
  }, 
                    "scripts": { 
                    "log": 
                    "rimraf CHANGELOG.md && conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md" } 
                    复制代码

3、添加配置文件 commitlint.config.js在根目录添加配置文件,commitlint.config.js,用以指定校验规则

                    module.exports = { 
                    extends: [
                    '@commitlint/config-conventional']
} 
                    复制代码

Note:commitlint需要配置一份校验规则,@commitlint/config-conventional就是符合Angular规范的一份校验规则

如何使用

1、直接提交:

// 不规范提交会被拒绝
git commit -m '这是一次不规范的提交'
// 规范化提交才能通过
git commit -m "chore: commit message" 
                    复制代码

2、使用 git cz 代替 git commit

                    // git cz 会启动一个工具帮助我们自动生成 git commit 信息 git cz 
                    复制代码

符合规范的标准

// type(必需)、scope(可选)和subject(必需)。
<type>(<scope>): <subject> 
                    复制代码

type 的值有如下类型:

参考

本文总结自 Cz工具集使用介绍 - 规范Git提交说明,感谢他(她)的分享

发表评论
评论通过审核后显示。