Git 本身可以调用自定义的挂钩脚本,其中有两组:客户端和服务器端。客户端挂钩用于客户端的操作,如提交和合并。服务器端挂钩用于 Git 服务器端的操作,如接收被推送的提交。
进入当前的项目的目录,执行如下命令,会看到git下面hooks包含的hook操作
1 | vim .git/hooks/ |
Git的挂钩(Hook)主要包含:
- applypatch-msg.sample*
- commit-msg.sample*
- post-update.sample*
- pre-applypatch.sample*
- pre-commit.sample*
- pre-push.sample*
- pre-rebase.sample*
- prepare-commit-msg.sample*
- update.sample*
- ……
有了这些hooks,我们可以对git过程操作进行hook操作,其中在以下一些场景中会有实际的应用:
1.ClangFormat代码格式化其中对pre-commit进行了提交代码到git之前的hook操作,可以检查代码的格式是否符合一定的规范.
2.当然我们在进行图形化工具进行checkout,post-merge之后进行post-checkout,post-merge的hook操作,添加脚本自动执行pod的pod update自动操作省去手动pod库文件的操作。
3.我们提交代码到主分之的时候,先做pre-merge的hook操作,检查是否能够通过编译,通过编译的情况下才能合并到主分之。
4……
问题
1.示例的名字都是以 .sample 结尾,如果你想启用它们,得先移除这个后缀
2.对文件我们需要增加执行权限chmod +x “文件名称”