php技术博客

记录php相关学习知识及开发示例、疑难问题等

线上服务器搭建git服务,本地代码上传实现自动同步到线上服务器指定web目录

最新公司有个项目代码需要规范化,可以查看历史记录及··可以·回滚操作,所以考虑使用在服务器上搭建git服务器,并设置钩子,当我们上传代码后自动同步到服务器代码目录下。下面为具体步骤

1、服务器上安装git程序

yum install git

2、在服务器上创建 裸版本库

git init --bare demo.git

//参数 --bare 是代表创建裸仓库

3、本地Clone远程的代码仓库到本地

git clone git@39.99.204.74:/home/git/demo.git

本地更新代码后,推送到远端

git push origin master

4、之前步骤实现了本地推送到服务器仓库中,如何实现自动同步到服务器代码目录里面了?自动同步功能用到的是 git 的钩子功能。

服务器端,进入 对应仓库,如

cd /home/git/demo.git

创建post-receive文件

cd hooks

vi post-receive

在里面添加文件

#!/bin/bash

git --work-tree=/www/wwwroot/demoroot checkout -f

PS:

1、其中 /www/wwwroot/demoroot 为 web目录地址

2、post-receive文件需要将用户、用户组设为git,并且需要设置可执行权限。

3、/www/wwwroot/demoroot 目录需要git用户有可写权限,不然客户端会提示没有上传权限