Git仓库根据不同分支,提交更新到不同站点
Git仓库根据不同分支,提交代码自动同步到服务器不同站点
昨天试验了自建仓库,本地提交代码自动同步到服务器站点目录,今天尝试根据所提交的分支,代码可以同步到服务器不同站点,毕竟有时候我们的开发环境有正式服、测试服,所以这个功能非常有用。
一、新建测试站点
我们昨天新建了一个站点,所在目录是:/home/www/projectHzx,我们今天再新建一个站点目录,用于存放测试代码,输入以下命令
cd /home/www mkdir projectHzxTest
为了确保我们git账户对站点目录有权限,我们输入以下命令
chown -R git:users /home/www
这样我们就准备了两个站点,分别是
/home/www/projectHzx:正式服 /home/www/projectHzxTest:测试服
二、修改钩子文件
我们昨天在仓库钩子目录下新建了一个钩子文件post-receive,用于代码同步,我们需要对文件进行修改
# 进入钩子文件所在目录 cd /home/git/projectHzx.git/hooks # 编辑钩子文件 vi post-receive
我们设定两个分支,用于正式服:master,测试服:test,钩子内容如下
#!/bin/sh # 打印开始日志 echo "======= start =======" # 执行读取逻辑 while read oldrev newrev ref do # 获取当前提交分支 branch=`echo $ref | cut -d/ -f3` # 打印当前分支名 echo "Target branch: $branch" # 判断提交分支是否是主分支 if [ "master" == "$branch" ]; then GIT_WORK_TREE=/home/www/projectHzx git checkout -f $branch echo 'changes pushed to master' fi # 判断提交分支是否是测试分支 if [ "test" == "$branch" ]; then GIT_WORK_TREE=/home/www/projectHzxTest git checkout -f $branch echo 'changes pushed to test' fi done # 打印结束日志 echo "======= end ======="
编辑完记得保存。
三、实验结果
我们来检验仓库是否可以根据不同的分支,代码自动更新到不同的目录,我们本地就用昨天那个仓库来做实验,我们先新创一个test分支,并切换到test分支
# 新建并切换到test分支 git checkout -b test # 如果本地存在test分支 git checkout test # 查看当前所属分支 git branch -a
新建一个9.txt文件并提交
git add . git commit -m '提交测试分支' git push
我们到服务器站点看看代码是否更新到测试服,以及正式服是否没有更新
从截图可以看到我们的测试站点目录是有了9.txt文件,正式站点目录是没有这个文件。
我们现在把test分支合并到master分支里,然后再提交,看他是否会更新到正式站点目录,我们在本地直接输入以下命令
# 切换到master分支 git checkout master # 查看当前分支,判断是否已经切换到master分支 git branch -a # 合并test分支代码到master分支 git merge test # 提交代码 git add . git commit -m '提交正式分支' git push
本地看到提交信息是提交到master分支了,然后我们到服务器看看正式服是否有9.txt文件
可以看到,代码是成功的提交到了正式服。
经过一番验证,可以成功的实现根据不同分支,代码提交到不同的站点目录。
0条评论