@Author:Outman
@Date:2023-01-28

Git Hooks

什么是 Git Hooks?

  • Git Hooks 是在 Git 仓库中特定事件(certain points)触发后被调用的脚本。
  • 客户端钩子 -> 由诸如提交和合并这样的操作所调用
pre-commit 执行git commit 命令时触发,常用于检查代码风格
pre-push 执行git push 命令时触发,可用于执行测试用例
prepare-commit-msg commit message 编辑器呼起前default commit message 创建后触发,常用于生成默认的标准化的提交说明
commit-msg 开发者编写完并确认commit message后触发,常用于校验提交说明是否标准
post-commit 整个git commit 完成后触发,常用于邮件通知、提醒
applypatch-msg git am提取出补丁并应用于当前分支后,准备提交前触发,常用于执行测试用例或检查缓冲区代码
pre-applypatch git am提交后触发,常用于通知、或补丁邮件回复(此钩子不能停止git am过程)
pre-rebase 执行git rebase命令时触发
post-rewrite 执行会替换commit的命令时触发,比如git rebase或git commit –amend
post-checkout 执行git checkout命令成功后触发,可用于生成特定文档,处理较大的二进制文件等
post-merge 成功完成一次merge行为后触发
pre-auto-gc 执行垃圾回收前触发
  • 服务端钩子 -> 作用于诸如接收被推送的提交这样的联网操作
pre-receive 当服务端收到一个push操作请求时触发,可用于检测push的内容
update 与pre-receive相似,但当一次push想更新多个分支时,pre-receive只执行一次,而此钩子会为每一分支都执行一次
post-receive 当整个push操作完成时触发,常用于服务侧同步、通知

Git Hooks 工程实践

  • Husky
    • 安装
npm install husky --save-dev
  • 配置
// package.json
{
  "husky": {
    "hooks": {
      "pre-commit": "npm test",
      "...":"..."
    }
  }
}
  • link-staged
    • 安装
npm install prettier eslint -D
npm mrm lint-staged
  • 配置
// package.json
{
  "lint-staged": {
   "*.js":"eslint --cache --fix",
   "*.{js,css,md}":"prettier --write"
  }
}

工程化流程

工程化流程


版权声明:本文为weixin_42919342原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_42919342/article/details/128780501