三分钟教你学Git(十七) - 钩子

Posted wgwyanfs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三分钟教你学Git(十七) - 钩子相关的知识,希望对你有一定的参考价值。

Git能够定制一些钩子,这些钩子能够在特定的情况下被运行,分为Client端的钩子和Server端的钩子。Client端钩子被operation触发,比方commit,merge等,Server端钩子被网络动作触发,比方pushed commits。


那么钩子是放在哪的呢?

在.git/hooks/目录下。当你init一个仓库的时候,下边会有一些钩子的样例。以.sample结尾。


那么钩子什么时候被运行,Git提前定义了触发时机:

ClientSide hooks:

1 pre-commit,当运行commit动作时先运行此hook。能够用此hook做一些检查。比方代码风格检查,或者先跑測试。

2 prepare-commit-msg。 当commit时须要输入message前会触发此hook,能够用此hook来定制自己的default message信息。

3 commit-msg。当用户输入commit的message后被触发,能够用此hook校验message的信息,比方是否符合规定,有没有cr等。

4 post-commit, 当commit完毕后被触发,能够用此hook发送notification等。

5 pre-rebase, rebase之前会被触发,能够用此hook来拒绝全部的已经push的commits进行rebase操作。

6 post-merge, 当merge成功后,会触发此hook。

7 pre-push, 当push时。remote refs被更新。可是在全部的objects传输前被触发。

8 pre-auto-gc, 当git gc --auto运行前被触发。

在垃圾回收之前做一些验证或备份是挺不错的。


ServerSide hooks:

1 pre-receive, 当收到push动作之前会被运行。

2 update, 也是收到push动作之前被运行,可是有可能被运行多次,每一个branch一次。

3 post-receive, 当push动作已经完毕的时候会被触发,能够用此hook来push notification等,比方发邮件。通知持续构建server等。


记住全部的hook都应该是可被运行的。

chmod u+x your_hook

所以你能够用shell脚本。perl,python等写钩子。


原文:http://blog.csdn.net/hongchangfirst/article/details/46693237

作者:hongchangfirst

hongchangfirst的主页:http://blog.csdn.net/hongchangfirst




以上是关于三分钟教你学Git(十七) - 钩子的主要内容,如果未能解决你的问题,请参考以下文章

三分钟教你学Git(十四) 之 线下传输仓库

webpack配置篇(三十七):Git 规范和 Changelog 生成

STM32F103你学不会系列(十七)电容触摸按键实现

vue 笔记(十七) 404和路由钩子

简易的 openresty/lua 的 git 钩子

git自定义项目钩子和全局钩子