钩子只属于并且作用于一个特定的版本库,克隆操作的时候不会被复制!
Git钩子分为两类:
前置钩子:动作完成前被调用,如果失败,Git动作也就失败
后置钩子:动作完成后被调用,不影响动作结果
钩子其实就是一个或者多个事先义好的脚本。
Git钩子存放的的位置 ./git/hooks
[root@git hooks]# ls -al
total 52
drwxr-xr-x. 2 root root 4096 Dec 19 00:36 .
drwxr-xr-x. 8 root root 4096 Dec 19 06:16 ..
-rwxr-xr-x. 1 root root 452 Dec 19 00:36 applypatch-msg.sample
-rwxr-xr-x. 1 root root 896 Dec 19 00:36 commit-msg.sample
-rwxr-xr-x. 1 root root 160 Dec 19 00:36 post-commit.sample
-rwxr-xr-x. 1 root root 548 Dec 19 00:36 post-receive.sample
-rwxr-xr-x. 1 root root 189 Dec 19 00:36 post-update.sample
-rwxr-xr-x. 1 root root 398 Dec 19 00:36 pre-applypatch.sample
-rwxr-xr-x. 1 root root 1578 Dec 19 00:36 pre-commit.sample
-rwxr-xr-x. 1 root root 1239 Dec 19 00:36 prepare-commit-msg.sample
-rwxr-xr-x. 1 root root 4951 Dec 19 00:36 pre-rebase.sample
-rwxr-xr-x. 1 root root 3611 Dec 19 00:36 update.sample
[root@git hooks]#
上面的是模板钩子,需要把.sample 后缀去掉才可以用。
随便开一下看看
[root@git hooks]# cat applypatch-msg.sample
!/bin/sh
. git-sh-setup
test -x "$GIT_DIR/hooks/commit-msg" &&
exec "$GIT_DIR/hooks/commit-msg" ${1+"$@"}
:
[root@git hooks]#
可以看到其实就是一个脚本,而且有可执行权限。