使用Git Hooks规范化团队代码提交

591 阅读3分钟

「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战」。

前言

小凌最近在查找以前提交的代码时,遇到了困难。

Image.png

大家在日常开发中是否有遇到过这样的提交备注呢?在当时可能为了图方便只是简单的文字描述,或者直接不填写。在短期看来的确是方便了我们快速提交,但是为我们之后维护带来了很大的困难。

接下来我们就来学习如何比较规范地写出commits

Git Hooks

什么是Git Hooks

如同其他许多的版本控制系统一样, Git也具有在特定事件发生之前或之后执行特定脚本代码功能(就好像监听事件、触发器之类的东西)。Git Hooks就是那些在Git执行特定事任(如commitpushreceive等) 后触发运行的脚本,hook是可以放置在hook目录中的程序,可在git执行的某些 点触发动作。没有设置可执行位的hook将被忽略。

Git Hooks 能做什么

Git Hooks是定制化的脚本程序,所以它实现的功能与相应的git动作相关,如下几个简单例子:

1.多人开发代码的情况下代码语法规范强制统一。 2.commitmessage格式化、检查是否符合规范。 3.在特定情况下,可以对测试用例进行检测。 4.服务器上代码有更新的时候可以通知所有开发成员。 5.代码提交后对项目自动打包。 等等...

Git Hooks生命周期

我们可以在以下目录下看到:

{yourLocalUrl}\.git\hooks

02.png

hooks目录钟存放了很多sample文件,这里面的每一个sample,其实就是每一个git钩子。

Husky + commitlint

Husky是Git Hooks的一个工具(官网地址)。

安装配置

1.安装husky

yarn add @commitlint/config-conventional @commitlint/cli husky -D

2.package.json增加

package.json

"husky": {
 "hooks": {
  "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
 }
}

3.根目录增加文件commitlint.config.js

commitlint.config.js

module.exports = {
  extends: ['@commitlint/config-conventional'],
  rules: {
    'type-enum': [
      2,
      'always',
      [
        'bug', // 此项特别针对bug号,用于向测试反馈bug列表的bug修改情况
        'feature', // 新功能(feature)
        'fix', // 修补bug
        'docs', // 文档(documentation)
        'style', // 格式(不影响代码运行的变动)
        'refactor', // 重构(即不是新增功能,也不是修改bug的代码变动)
        'test', // 增加测试
        'chore', // 构建过程或辅助工具的变动
        'revert', // feat(pencil): add ‘graphiteWidth’ option (撤销之前的commit)
        'merge' // 合并分支, 例如: merge(前端页面): feature-xxxx修改线程地址
      ]
    ]
  }}

测试提交

不符合规范的提示git commit -m 'test'

03.png

规范的提示git commit -m "fix: 修改test.cls"

04.png

如此我们就能规范化去提交我们的修改信息啦。

各个提交类型的意义

'feat', // 新功能
'upd', // 修改
'del', // 删除
'fix', // bug修复
'test', // 单元测试
'perf', // 性能优化
'docs', // 文档更新
'style', // 样式变动
'refactor', // 功能重构
'revert', // 回滚某个更早之前的提交
'package', // 创建包

最后要说的

大家有什么问题欢迎评论哦~如果你觉得小凌写的不错那么请给小凌一个赞呗。你的支持是我前进下去的动力🙂