搭建服务器上的Git并实现自动同步到站点目录(www)

文章原文:https://blog.csdn.net/glx490676405/article/details/78329004

已安装过Git 可参考:https://blog.csdn.net/xiaoweite1/article/details/80344289

因业务需要,我需要实现项目的版本控制并在提交代码的时候能将实时更新的代码同步更新到站点目录,折腾大半天,就记录下来,也仅供大家参考
一 、 在服务器上安装Git


验证 git 是否安装成功 git --help,出现下图则安装成功

·
二 、在服务器上创建裸版本库
ps:远程仓库通常只是一个裸仓库(bare repository)--即一个没有当前工作目录的仓库。因 为该仓库只是一个合作媒介,所以不需要从硬盘上取出最新版本的快照;仓库里存放的仅仅是Git的数据。简单来说,裸仓库就是你工作目录中.git子目录的内容。。。
#git init --bare [仓库名] ----创建裸仓库
#git init [仓库名] ---- 创建仓库


三、在本地克隆服务器上的裸仓库
本地已安装 Git Bash , 如果未安装:https://git-for-windows.github.io/
进入本地版本库所在目录(可根据实际情况自定义),然后进行Clone


出现上图情况,即用户权限问题,将仓库文件夹赋予git用户,相关命令如下:
useradd git
passwd git (your pass)
chown -R git:git [仓库名称]
或者是因为本地原有的SSH协议信息失效了,解决方案,清除你当前机器里关于你的远程服务器的缓存和公钥信息
ssh-keygen -R "你的远程服务器ip"


初始化本地仓库,创建本地开发分支 【Git checkout -b newbranch】;
然后就可以进行代码的版本管理了...

四、实现自动同步到站点目录[即使用git的钩子功能]
ps: 使用的是服务端钩子
我们需要两个目录
1、git 服务器仓库目录 : /home/testgit/test.git
2、web站点目录:/www/test
开始配置钩子 Hooks
1> 在仓库目录中新建post-receive,位于/home/testgit/test.git/hooks
2>切换至web站点目录,执行项目克隆
# cd /home/www
# git clone /home/testgit/test.git
3> 编写自动拉取脚本,即post-receivecd,内容如下

保存后赋予可执行权限:
# chmod +x /home/testgit/test.git/hooks/post-receive
4> 修改web目录的权限
ps:因为执行拉取的时候是git用户,所以站点项目目录(/home/www/test)的权限设定为git 用户
5> 配置完成,这样在本地执行git push 代码时,服务器代码仓库更新的同时,web站点目录/home/www/test 也会自动执行git pull 同步本地推送


至此,git服务器的安装部署和自动同步Web站点目录就完成了。

猜你喜欢

转载自blog.csdn.net/PHPArchitect/article/details/88680654