本文已整理到 Github,地址 👉 blog。
如果我的内容帮助到了您,欢迎点个 Star
🎉🎉🎉 鼓励鼓励 :) ~~
我希望我的内容可以帮助你。现在我专注于前端领域,但我也将分享我在有限的时间内看到和感受到的东西。
Git hooks 是每次 Git 存储库中发生特定事件时自动运行的脚本。它们允许您定制 Git 的内部行为,并在开发生命周期的关键点触发可定制的操作。
![](https://i-blog.csdnimg.cn/blog_migrate/73c400f7ba310516e4a0ab53044ff8ad.png)
在提交创建过程中执行的 hooks
Git hooks 的常见用例包括鼓励提交策略、根据存储库的状态改变项目环境,以及实现连续集成工作流。但是,由于脚本是无限可定制的,您可以使用 Git hooks 来自动化或优化开发工作流的几乎任何方面。但如果添加的 Hook 脚本未正常运行,则 Git 操作将不会通过。
Hook 脚本置于目录 ~/.git/hooks
中,以可执行文件的形式存在。
$ ls -lah .git/hooks
applypatch-msg.sample pre-push.sample
commit-msg.sample pre-rebase.sample
fsmonitor-watchman.sample pre-receive.sample
post-update.sample prepare-commit-msg.sample
pre-applypatch.sample update.sample
pre-commit.sample push-to-checkout.sample
pre-merge-commit.sample
以上常用 hooks 有:
pre-commit
pre-push
commit-msg
另外 git hooks 可使用 core.hooksPath
自定义脚本位置。
# 可通过命令行配置 core.hooksPath
$ git config 'core.hooksPath' .husky
# 也可通过写入文件配置 core.hooksPath
$ cat .git/config
[core]
hooksPath = .husky
在前端工程化中,husky 即通过自定义 core.hooksPath
并将 npm scripts
写入其中的方式来实现此功能。
Husky 允许您安装钩子,包括用 JavaScript 编写的钩子。
~/.husky
目录下手动创建 hook 脚本。
# 手动创建 pre-commit hook
$ vim .husky/pre-commit
在 pre-commit
中进行代码风格校验:
#!/bin/sh
npm run lint