当在服务器创建一个远程仓库时,一般都会创建一个裸仓库(–bare)实现仓库与源码分离,即裸仓库只记录版本信息,不存在工作区。则站点需要从仓库中拉取源码。
站点和仓库在同一个服务器
su git #这里是搭建git服务时,创建的用户
vim /home/git/git.git/hooks/post-receive #创建文件
创建post-receive文件,并写入如下代码
#!/bin/bash
git --work-tree=/www/wwwroot checkout -f
/www/wwwroot 指定站点目录
设置用户组和权限
chown git:git post-receive
chmod +x post-receive
如果本地git push成功,但是在站点目录下并没有代码,这很可能是文件夹的权限造成的! 若站点目录所属的用户组为root,可以将git用户加入这个组,并给git添加写入权限,或者将整个站点目录权限改为git组和git用户,总之要服务器上的git用户有权限进入站点目录
站点和仓库在不同服务器
当站点和仓库在不同服务器时,我们可以将我们的生产环境想象成就是一个本地客户端,直接通过 git pull 或 git fetch 来从远程仓库拉取代码
实现方法有很多,这里只介绍通过计划任务来实现自动拉取
准备:
和本地搭建git一样,需要在站点服务器搭建git客户端,并配置ssh免密 、克隆仓库。 点击跳转到git搭建
创建一个脚本文件