Git Hooks

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 “文件名称”

参考

1.Git Community Book 中文版

2.自定义 Git - Git 钩子

3. linux文件权限查看及修改-chmod ——入门的一些常识