@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 版权协议,转载请附上原文出处链接和本声明。