GIT实践之生成规范的commit message

分享一篇团队内的小伙伴创作的GIT实践

一、为什么需要规范?

  • 无规矩不成方圆,编程也一样。
  • 如果你有一个项目,从始至终都是自己写,那么你想怎么写都可以,没有人可以干预你。可是如果在团队协作中,大家都张扬个性,那么代码将会是一团糟,好好的项目就被糟践了。不管是开发还是日后维护,都将是灾难。
  • Git Commit 规范可能并没有那么夸张,但如果你在版本回退的时候看到一大段糟心的 Commit,恐怕会懊恼不已吧。所以,严格遵守规范,利人利己。

二、具体规则

先来看看公式:

<type>(<scope>): <subject>
  • type 用于说明 commit 的类别,只允许使用下面7个标识。
  • feat:新功能(feature)
  • fix:修补bug
  • docs:文档(documentation)
  • style: 格式(不影响代码运行的变动)
  • refactor:重构(即不是新增功能,也不是修改bug的代码变动)
  • test:增加测试
  • chore:构建过程或辅助工具的变动
  • scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。
  • subject 是 commit目的的简短描述,不超过50个字符。
  • 以动词开头,使用第一人称现在时,比如change,而不是changed或changes
  • 第一个字母小写
  • 结尾不加句号(.)

三、Commitizen

  • mac如果没有安装npm命令,可以用brew命令下载

brew install npm

  • 安装命令如下:

$ npm install -g commitizen

  • 然后,在项目目录里,运行下面的命令,使其支持 Angular 的 Commit message 格式。

$ commitizen init cz-conventional-changelog --save --save-exact

  • 以后,凡是用到git commit命令,一律改为使用git cz。这时,就会出现选项,用来生成符合格式的 Commit message。
    在这里插入图片描述

四、validate-commit-msg

Node 插件 validate-commit-msg 来检查项目中 Commit message 是否规范,
插件安装在项目中.git的hook目录下,命名为validate-commit-msg.js。

1.首先,安装插件:

npm install --save-dev validate-commit-msg

2.使用方式一,建立 .vcmrc 文件:

{
  "types": ["feat", "fix", "docs", "style", "refactor", "perf", "test", "build", "ci", "chore", "revert"],
  "scope": {
    "required": false,
    "allowed": ["*"],
    "validate": false,
    "multiple": false
  },
  "warnOnFail": false,
  "maxSubjectLength": 100,
  "subjectPattern": ".+",
  "subjectPatternErrorMsg": "subject does not match subject pattern!",
  "helpMessage": "",
  "autoFix": false
}

3.使用方式二:写入 package.json

{
  "config": {
    "validate-commit-msg": {
      /* your config here */
    }
  }
}

4.可是我们如果想自动使用 ghooks 钩子函数呢?

{
  …
  "config": {
    "ghooks": {
      "pre-commit": "gulp lint",
      "commit-msg": "validate-commit-msg",
      "pre-push": "make test",
      "post-merge": "npm install",
      "post-rewrite": "npm install",
      …
    }
  }
  …
}

五、生成 Change log

如果你的所有 Commit 都符合 Angular 格式,那么发布新版本时, Change log 就可以用脚本自动生成

  • 生成的文档包括以下三个部分:
  • New features
  • Bug fixes
  • Breaking changes
  • 每个部分都会罗列相关的 commit ,并且有指向这些 commit
    的链接。当然,生成的文档允许手动修改,所以发布前,你还可以添加其他内容。
  • conventional-changelog
    就是生成 Change log 的工具,运行下面的命令即可:
  • $ npm install -g conventional-changelog
  • $ cd my-project
  • $ conventional-changelog -p angular -i CHANGELOG.md -w
  • 上面命令不会覆盖以前的 Change log,只会在CHANGELOG.md的头部加上自从上次发布以来的变动

  • 如果你想生成所有发布的 Change log,可以将其写入package.json的scripts字段

{
  "scripts": {
    "changelog": "conventional-changelog -p angular -i CHANGELOG.md -w -r 0"
  }
}
  • 以后,直接运行下面的命令即可。

$ npm run changelog

关注"百度效率云官方公众号",了解更多百度研发工程实践
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值