Git Hooks
Git具有在特定事件发生之前或之后执行特定脚本代码功能(监听事件、触发器之类的)
Git Hooks就是那些在Git执行特定事件(如commit、push、receive等)后触发运行的脚本。
Git Hooks脚本所在的位置可以分为两类:
本地Hooks,触发事件如commit、merge等。
服务端Hooks,触发事件如receive等。
pre-commit: 检查每次的commit message是否有拼写错误,或是否符合某种规范。
pre-receive: 统一上传到远程库的代码的编码。
post-receive: 每当有新的提交的时候就通知项目成员(可以使用Email或SMS等方式)。
post-receive: 把代码推送到生产环境
Git Hooks是如何工作的?
applypatch-msg
pre-applypatch
post-applypatch
pre-commit 是最先触发运行的脚本。在提交一个commit之前
prepare-commit-msg 脚本会在默认的提交信息准备完成后但编辑器尚未启动之前运行。 这个脚本的作用是用来编辑commit的默认提交说明,主要是用于能自动生成commit message的情况
commit-msg 脚本可以用来验证提交说明的规范性
post-commit 脚本发生在整个提交过程完成之后。这个脚本不包含任何参数,也不会影响commit的运行结果,可以用于发送new commit通知
pre-rebase
post-checkout
post-merge
pre-receive
update
post-receive
post-update
pre-auto-gc
post-rewrite
项目 : /project/sample.git (开发)
git init --bare sample.git 裸仓库
vim sample.git/hooks/post-receive
unset GIT_DIR
#进入目标仓库目录
cd /target/sample.git
#执行git pull命令
git pull /project/sample.git master
#返回项目仓库并退出
cd /project/sample.git
exit 0
目标 : /target/sample.git
git init sample.git 初始化为一般仓库