git hooks

347 阅读1分钟

git hooks是什么?

git hooks顾名思义就是git的一些钩子函数,也就是在用git进行一些操作的时候触发的函数。比如:git commit、git push等等

为什么要使用git hooks?

我们可以考虑这么一个场景:
在我们的开发团队中,我们想一统我们git commit的信息格式,那么我们就可以使用 pre-commit这个钩子函数进行提交验证。

如何使用git hooks

1.安装依赖

npm install --save-dev husky lint-staged @commitlint/cli @commitlint/config-angular

2.在npm package.json中加入配置

{
    // husky继承了Git下所有的钩子,在触发钩子的时候,husky可以阻止不合法的commit,push等等
    // 注意使用husky之前,必须先将代码放到git仓库中,否则本地没有.git文件,就没有地方去继承钩子了
    "husky": {
        "hooks": {
          "commit-msg": "commitlint -E HUSKY_GIT_PARAMS",
          // lint-staged 只检测本次改动的文件
          "pre-commit": "lint-staged"
        }
    },
    "lint-staged": {
        "*.js": "eslint --max-warnings=0"
   },
   "commitlint": {
       "extends": [
           "@commitlint/config-angular"
        ]
   }
}

3.git提交的一些规范

  • feat: 新功能(feature)
  • fix: 修补bug
  • docs: 文档(documentation)
  • style: 格式(不影响代码运行的变动)
  • refactor: 重构(即不是新增功能,也不是修改bug的代码变动)
  • chore: 构建过程或辅助工具的变动
  • revert: 撤销,版本回退
  • perf: 性能优化
  • test:测试
  • improvement: 改进
  • build: 打包
  • ci: 持续集成

备注

以上配置我们走的只是本地的git hooks,熟悉git的同学知道,我们使用 --no-verify(简写为 -n)参数即可跳过本地检查,那么如何避免这种情况呢?
git hooks也提供了服务端的钩子,具体配置这里我们就不在赘述了。