我们 需要两个目录
- git 服务器仓库目录 例如: /mnt/test.git
- web服务器目录 例如: /data/test
Git Hooks
我们使用的是服务端钩子
post-receive,它位于/mnt/test.git/hooks
当我们在本地执行push命令到git服务器的时候,服务器会自动触发post-receive钩子。
配置post-receive
先在 /data/test目录执行git clone /mnt/test.git
post-receive 脚本的内容为
#!/bin/sh
cd /data/test || exit
unset GIT_DIR #还原环境变量
git pull origin master
保存后赋予可执行权限
chmod +x /mnt/test.git/hooks/post-receive
如果不加 unset GIT_DIR #还原环境变量
就会报出 remote: fatal: not git respository:’.’
错误
修改web服务器根目录的权限
因为执行拉取的时候是git用户所以要把web服务器根目录( /data/test) 的权限设定为git用户
chown -R git:git /data/test
如果没有做上述操作就会报:
cannot open .git/FETCH_HEAD:Permission denied
这样执行 git push 服务器的git仓库会更新,同时服务器上的网站服务器根目录 /data/test也会自动执行git pull 同步本地的推送
完成!!!