conventional commit(约定式提交)

前言


此篇文档基于 21 年年终述职大家提出的开发规范化管理和文档化管理的建议,结合 Conventional Commits 约定式提交规范 对 git 代码作出提交规范化。

那什么是 Conventional Commits 约定式提交规范 呢?

定义


Conventional Commits 是一种用于给提交信息增加人机可读含义的规范。它提供了一组用于创建清晰的提交历史的简单规则。

提交说明的结构如下:

<类型>([可选的作用于]): <描述>

[可选的正文]

[可选的脚注]

作用


  • 自动化生成 CHANGELOG
  • 基于提交类型,自动决定语义化的版本变更
  • 向项目相关合作开发者发送变更信心
  • 触发自动化构建和部署流程
  • 给开发者提供一个更加结构化的提交历史,便于减低对项目做贡献的难度

使用流程


git commit 最佳实践,cimmitizen + husky + commitlint 规范化校验

cimmitizen

  1. 执行以下命令
npm install -g commitizen

npm install -g cz-conventional-changelog

echo '{"path":"cz-conventional-changelog"}' > ~/.czrc
  1. 测试功能

执行 git cz 提交代码,出现以下流程

// 选择一个提交的类型
1. select the type of change that you're committing
type 含义
feat 新增功能
fix 修复 bug
docs 更改文档
style 不影响代码含义的变化(空白,格式化,缺少分号等)
refactor 重构,不修复 bug 且不添加功能
perf 性能优化代码
build 构建方面相关

// 更改影响的范围,可不填
2. What is the scope of this change (e.g. component or file name): (press enter to skip)

// 简短的描述
3. Write a short, imperative tense description of the change (max 88 chars)

// 具体描述
4. rovide a longer description of the change: (press enter to skip)

// 是否有破坏性的更改
5. Are there any breaking changes?

// 是否有关联性的问题
6. Does this change affect any open issues?

如下图:


cz流程.png

git log 查看提交日志

log.png

由上图可以看出,提交了一个 fix(test)项,也是符合了约定式提交规范

husky

  1. 安装 husky

npm install husky —save-dev

  1. 安装 git hooks
方法1:
npx husky install

方法2:配置package.json文件中script: "prepare": "husky install"
npm run prepare

  1. 测试 husky 钩子,添加 pre-commit 钩子
npx husky add .husky/pre-commit "npm test"

根目录.husky 文件夹下生成 pre-commit 文件,删除 pre-commit 钩子只需删除文件即可

commitlint

  1. 安装
npm install -g @commitlint/cli @commitlint/config-conventional
  1. 生成规范配置文件
echo "module.export = {extends:['@commitlint/config-conventional']}" > commitlint.config.js
  1. 根目录.husky 文件夹下 pre-commit 文件中添加规则
npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'
  1. 在 commitlint.config.js 文件中写入规则
module.exports = {
  extends: ["@commitlint/config-conventional"],
  rules: {
    "type-enum": [
      2,
      "always",
      [
        "build",
        "ci",
        "chore",
        "docs",
        "feat",
        "fix",
        "perf",
        "refactor",
        "revert",
        "style",
        "test",
      ],
    ],
  },
};
  1. 测试提交功能
git add .
git commit -m 'xxx'

执行完上两步操作后,终端出现报错:

⧗   input: xxx
✖   subject may not be empty [subject-empty]
✖   type may not be empty [type-empty]

✖   found 2 problems, 0 warnings
ⓘ   Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint

husky - commit-msg hook exited with code 1 (error)

两个报错:1. 缺少类型参数 2. 缺少描述信息
碰到这两个报错可以选择两种方式解决提交报错问题

方法一: 按照规范,为 commit 信息添加入参。例如 git commit -m 'fix: 修改bug'
方法二: 使用 git cz,按步骤操作

standard-version

1.安装
npm install standard-version

  1. package.json文件中配置
"scripts": {
    "release": "standard-version"
  }
  1. 提交代码后执行 npm run release

    release.png

    执行完后自动升级版本号、自动生成CHAGNELOG文件,里面是之前提交的对应版本号

  2. 生成的tags不会推送到远程,所以还要执行最后一步
    git push --tag

    tag.png

    生成新tag并推送到远程

最后去git上验证就可以啦~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容