使用 commitizen 规范git提交说明

我们保存本地代码是用命令

git add . 
git commit -m 'xxx'

commitize的作用就是代替git commit ,用来规范git提交说明;

1. 规范的提交格式

符合规范的Commit Message的提交格式如下,包含了页眉(header)、正文(body)和页脚(footer)三部分。其中,header是必须的,body和footer可以忽略。

Header

Header 部分只有一行,包括三个字段:提交类型type(必需)、作用域scope(可选)、主题subject(必需)

请添加图片描述

作用域(scope)表示此次提交影响的范围。比如可以取值api,表明只影响了接口。

主题(subject)描述是简短的一句话,简单说明此次提交的内容

正文(body)和页眉(footer)

正文(body)和页眉(footer)这两部分不是必须的。

如果是破坏性的变更,那就必须在提交的正文或脚注加以展示。一个破坏性变更必须包含大写的文本 BREAKING CHANGE,紧跟冒号和空格。脚注必须只包含 BREAKING CHANGE、外部链接、issue 引用和其它元数据信息。例如修改了提交的流程,依赖了一些包,可以在正文写上:BREANKING CHANGE:需要重新npm install,使用npm run cm代替git commit。

下面给出了一个Commit Message例子,该例子中包含了header和body。
chore: 引入commitizen

BREANKING CHANGE:需要重新npm install,使用npm run cm代替git commit

当然,在平时的提交中,我们也可以只包含header,比如我们修改了登录页面的某个功能,那么可以这样写Commit Message。

feat(登录):添加登录接口

2. Commitizen

虽然有了规范,但是还是无法保证每个人都能够遵守相应的规范,因此就需要使用一些工具来保证大家都能够提交符合规范的Commit Message。常用的工具包括了可视化工具和信息交互工具,其中Commitizen是常用的Commitizen工具,接下来将会先介绍Commitizen的使用方法。
commitizen

安装

npm install commitizen -g
npm install commitizen cz-conventional-changelog --save-dev

配置

package.json

"config": {
  "commitizen": {
    "path": "./node_modules/cz-conventional-changelog"
  }
}

使用

git cz

3. 生成 Change log 文件

conventional-changelog 就是生成 Change log 的工具,运行下面的命令即可。

npm install -g conventional-changelog

如果你想生成所有发布的 Change log,要改为运行下面的命令。

conventional-changelog -p angular -i CHANGELOG.md -w -r 0

为了方便使用,可以将其写入package.json的scripts字段。

{
  "scripts": {
    "changelog": "conventional-changelog -p angular -i CHANGELOG.md -w -r 0"
  }
}

以后,直接运行下面的命令即可。

npm run changelog

但是我执行命令时候 报错 告诉我 sh: conventional-changelog: command not found;
很奇怪 明明已经安装过,最后在这篇文章 Git 提交记录和分支模型中发现

conventional-changelog-cli:通过提交记录生成 CHANGELOG.md
conventional-github-releaser:通过提交记录生成 github release 中的变更描述
conventional-recommended-bump:根据提交记录判断需要升级 Semantic Versioning 哪一位版本号
validate-commit-msg:检查提交记录是否符合约定

所以就改用了conventional-changelog-cli:

npm install conventional-changelog-cli --save

这时候执行npm run changelog 发现可以执行,并且在命令行中出 CHANGELOG 的内容,但我想要的是生成CHANGELOG文件,需要使用

// 基于上次 tag 版本之后的变更(Feature、Fix、Breaking Changes等等)所产生的
conventional-changelog -p angular -i CHANGELOG.md -s

// 项目正式使用。--- 生成之前所有 commit 信息产生的 changelog 
conventional-changelog -p angular -i CHANGELOG.md -s -r 0

更多的 config 可以使用 conventional-changelog --help 查看
以上命令中参数-p angular用来指定使用的 commit message 标准; angular 就是指定的使用的 commit message 标准;
参数-i CHANGELOG.md表示从 CHANGELOG.md 读取 changelog,
-s 表示读写 changelog 为同一文件。
其中 -r 表示生成 changelog 所需要使用的 release 版本数量,默认为1,全部则是0。

⚠️还需要注意的是,在生成 changlog 之前,需要先使用 $ npm version [version] 更改版本号,然后再生成 changelog,这一步很多的博文都没有写,就会导致增量生成的 CHANGELOG 一直都有之前的 commit 记录。

4. standard-version

现在就可以使用 standard-version 进行版本管理自动化,包括更新 CHANGELOG.md,它也会自动修改 package.json 里的 version。
standard-version 是一款遵循语义化版本( semver)和 commit message 标准规范 的版本和 changlog 自动化工具。
一般来说 我们的发版流程如下

  • 切到master git pull origin master
  • 根据 pacakage.json 中的 version 更新版本号,更新 changelog
  • git add ., 然后 git commit
  • git tag 打版本操作
  • push 版本 tag 和 master 分支到仓库

其中2,3,4则是 standard-version 工具会自动完成的工作,配合本地的 shell 脚本,则可以自动完成一系列版本发布的工作了。

安装

npm install --save-dev standard-version

在 package.json 中编写:

"scripts": {
  "release": "standard-version"}

–release-as或者-r 指定版本号
主版本(major),次版本( minor) or 修订版(patch)

"scripts": {
    "release": "standard-version",
    "release:major": "standard-version -- --release-as major",
    "release:minor": "standard-version -- --release-as minor"
  },

为了合理的使用 standard-version,我们首先需要 git add . 文件,然后执行 npm run commit 提交,最后执行 npm run release。

执行完以后就会在项目根目录自动生成 CHANGELOG.md 文件。

默认情况下,standard-version 只会在 CHANGELOG.md 中记录 feat 和 fix 类型的提交。如果想记录其他类型的提交,需要如下步骤:

在项目的根目录下创建一个名为 .versionrc 的文件,并粘贴复制一下内容:

{
  "types": [
    {"type": "chore", "section":"Others", "hidden": false},
    {"type": "revert", "section":"Reverts", "hidden": false},
    {"type": "feat", "section": "Features", "hidden": false},
    {"type": "fix", "section": "Bug Fixes", "hidden": false},
    {"type": "improvement", "section": "Feature Improvements", "hidden": false},
    {"type": "docs", "section":"Docs", "hidden": false},
    {"type": "style", "section":"Styling", "hidden": false},
    {"type": "refactor", "section":"Code Refactoring", "hidden": false},
    {"type": "perf", "section":"Performance Improvements", "hidden": false},
    {"type": "test", "section":"Tests", "hidden": false},
    {"type": "build", "section":"Build System", "hidden": false},
    {"type": "ci", "section":"CI", "hidden":false}
  ]
}

type------commit 类型
section------不同的 commit 类型所在 CHANGELOG.md 中的区域
hidden------是否在 CHANGELOG.md 中显示

-r 指定版本号
standard-version -r 2.0.0自定义版本号2.0.0

–tag-prefix, -t 版本 tag 前缀
用来给生成 tag 标签添加前缀,例如如果前版本号为 2.0.0,则:
standard-version --tag-prefix "tags-"输出版本tags-v2.0.0

–tag-prefix, -t 版本 tag 前缀
用来给生成 tag 标签添加前缀,例如如果前版本号为 2.0.0,则:
standard-version --tag-prefix "tags-"输出版本tags-v2.0.0

5. 可视化提交工具

在VSCode的EXTENSIONS中找到git-commit-plugin插件,点击install进行安装。

安装完成之后,可以通过git add添加要提交的文件,接着,在Source Control点击show git commit template图标,开始编写Commit Message信息。

接下来只需要按照指引进行Commit Message的编写。

当编写完成之后,可以得到符合规范的Commit Message,这个时候就可以放心将Commit Message及所修改的文件进行提交啦。

其他博主优秀文
阮一峰

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Git提交代码时,我们应该遵循规范提交信息格式,以便让其他人更好地理解这次代码提交的目的和内容。通常,我们可以使用一些工具来约束开发者编写符合规范提交说明。一个常用的工具是Commitizen,它可以帮助我们生成符合规范提交信息。 为了使用Commitizen,我们首先需要在项目中安装cz-conventional-changelog包,并将其配置为Git提交时的默认工具。具体操作是在项目的package.json文件中添加以下内容: ``` "scripts": { "cm": "git-cz" }, "config": { "commitizen": { "path": "./node_modules/cz-conventional-changelog" } } ``` 然后,在我们提交代码时,可以使用以下命令替代"git commit": ``` npm run cm ``` 这样,Commitizen就会弹出一个交互式的界面,要求我们填写符合规范提交信息。通过这种方式,我们可以更好地规范我们的提交信息,提高代码审查、信息查找和版本回退的效率和可靠性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Git 提交规范](https://blog.csdn.net/fd2025/article/details/124543690)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值