现在一般都会通过github,gitlab,gitee来管理我们的代码。我们希望只要我本地push了代码,远程服务器能自动拉取git仓库的代码,进行同步。

这就需要用到各仓库为我们提供的webhooks了,每当有push操作时,仓库就会调用我们设置的脚本,通过在脚本里我们运行命令来手动拉取代码。

这里以gitee为例

一、首先我们在gitee创建一个项目

二、确保我们服务器上安装了git

> yum install git

三、为了避免git pull时输入账号和密码,我们需要创建.git-credentials

1、先cd到当前用户目录

> cd ~

2、然后创建.git-credentials文件

> vi .git-credentials

3、写入如下数据,注意,用户名和密码填上自已的

https://用户名:密码@gitee.com

4、运行如下命令

> git config --global credential.helper store

5、查看~/.gitconfig,会发现多一项

[credential]
helper = store

6、注意这里只是配置的当前用户,我php-fpm运行的用户是www(大家或许会跟我不同),所以我们需要为www也配置.git-credentials

我们把.gitconfig和.git-credentials复制到/home/www下,并设置所属用户和组为www

> cp ~/.gitconfig /home/www/
> cp ~/.git-credentials /home/www/
> cd /home/www
> chown www.www .gitconfig
> chown www.www .git-credentials

四、我们git clone项目代码

> cd /data/wwwroot/
> git clone https://gitee.com/lackone/test.git

  

五、由于我们是通过php脚本执行git pull所以,需要给www用户读写test目录的权限

> chown -R :www /data/wwwroot/test
> chmod -R g+w /data/wwwroot/test

六、拉取代码脚本,注意该脚本一定能外网访问

<?php

//本地路径
$local = '/data/wwwroot/test';
//仓库地址
$remote = 'https://gitee.com/lackone/test.git'; //密码
$password = '123456'; //获取请求参数
$request = file_get_contents('php://input');
if (empty($request)) {
die('request is empty');
} //验证密码是否正确
$data = json_decode($request, true);
if ($data['password'] != $password) {
die('password is error');
} echo shell_exec("cd {$local} && git pull {$remote} 2>&1");
die('done ' . date('Y-m-d H:i:s', time()));

  

七、配置gitee的webhooks

八、最后我们只要push代码,gitee就会请求我们设置的脚本,进行拉取代码。

提交代码到远程GIT仓库,代码自动同步到远程服务器上。的更多相关文章

  1. windows 2008 server 服务器远程桌面连接会话自动注销,在服务器上开掉的软件全部自动关闭的解决办法

    windows 2008 server 服务器远程桌面连接会话自动注销,在服务器上开掉的软件全部自动关闭的解决办法:

  2. 关于.ssh出错,无法从远程git仓库拉代码

    背景:从windows开发环境改到ubuntu,将windows下生成的.ssh文件拷贝到ubuntu下,以clone远程git仓库代码 错误:sign_and_send_pubkey: signin ...

  3. 本地项目关联到远程git仓库

    本地项目关联到远程git仓库 场景是这样的:在gitee-code上新建一个项目,gitee会帮你把项目初始化,初始化之后会根据你的选择生成默认的说明文件和gitignore文件.这个时候你就可以复制 ...

  4. xcode 版本控制推送代码到远程git仓库的步骤

    一 代码推送到远程git仓库 1.在git中建立一个下项目(假设项目名称为->Mygit) 2.在xocde上新建一个测试项目(假设项目名称为GitTest) 3.打开电脑终端: 1)首先利用终 ...

  5. 微信小程序开发——上传代码片段到git仓库

    微信开发者工具除了自带的git版本管理(本地服务)之外,还可以推送到在线git仓库中去,这样别人也可以通过git来拉取你的代码片段或小程序. 一.1.登录git 一.2.点击创建项目  一.3.填写项 ...

  6. GIT 如何合并另一个远程Git仓库的文件到本地仓库里某个指定子文件夹并不丢失远程提交记录?

    问题背景:     最近在重新整理手中的一个项目,目前该项目分为PC项目,手机项目,某第三方接口项目,第三方接口服务项目和手机项目     因为之前规划的原因,原来的四个项目是分两个解决方案来管理的 ...

  7. 使用gitbase 分析git 仓库代码

      gitbase 是一个基于golang 开发的开源git 仓库sql 接口查询引擎,基于此工具,我们可以方便的分析git 仓库代码的情况 而且可以基于源码的分析,还是很强大的 安装 直接使用编译的 ...

  8. git解决本地建立git仓库 连接远程git仓库出现拒绝合并问题

    (git解决本地建立git仓库 连接远程git仓库出现拒绝合并问题) 第一步在本地创建仓库 在本地创建一个文件夹,cd 进入创建的文件夹之后 git init 创建仓库 ,ls -a 能够看到 .gi ...

  9. IDEA新建本地项目关联远程git仓库

    现在远程git仓库创建一个repository,然后本地创建项目,最后进行关联.三板斧,打完收工. 第一步.第二步地球人都知道,略过不表,第三步比较关键,举个例子: 0.创建本地Git仓库:VCS - ...

  10. SourceTree 将本地已有的git项目推送到远程git仓库

    1.在远程git仓库创建对应的项目: 2.用命令行生成本地的ssh key; 3.把公钥粘贴远程仓库对应的位置: 4.SourceTree 设置远程仓库的地址: 5.把本地对应的分支推送到远程仓库: ...

随机推荐

  1. Web 使用反射获得一个对象的所有get方法

    问题描述: 由于想知道request中包含哪些getter方法,就想通过反射进行遍历,然后输出,结果异常,异常信息: 问题代码: try { outGetter(request); } catch ( ...

  2. Apache Kudu as a More Flexible And Reliable Kafka-style Queue

    Howdy friends! In this blog post, I show how Kudu, a new random-access datastore, can be made to fun ...

  3. 初学 python 之 用户登录实现过程

    要求编写登录接口 : 1. 输入用户名和密码 2.认证成功后显示欢迎信息 3.用户名输错,提示用户不存在,重新输入(5次错误,提示尝试次数过多,退出程序) 4.用户名正确,密码错误,提示密码错误,重新 ...

  4. GSO/TSO/GRO等对VirtIO虚机的网络性能影响分析(by quqi99)

    作者:张华  发表于:2016-04-05版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) IP层 ...

  5. Solr --- Group查询与Facet区别

    简介 facet的查询结果主要是分组信息:有什么分组,每个分组包括多少记录:但是分组中有哪些数据是不可知道的,只有进一步搜索. group则类似于关系数据库的group by,可以用于一个或者几个字段 ...

  6. win10 停留在启动画面

    这是由于部分电脑的主板不支持快速启动造成的,所以把快速启动功能关闭掉即可.具体操作步骤如下:控制面板--硬件和声音--电源选项--选择电源按钮的功能--选择“更改当前不可用的设置”,然后把“启用快速启 ...

  7. Java面向对象之抽象类

    内容: 1.抽象类的产生 2.抽象类和抽象方法的定义与使用 3.抽象类和抽象方法的注意事项 4.实例分析 1.抽象类的产生 当编写一个类时,我们往往会为该类定义一些方法,这些方法是用来描述该类的功能具 ...

  8. QT按键(Qbutton)改变颜色

    第一种是按键上面的字颜色的改变:   ui->motor1->setStyleSheet("color: red"); 效果: 第二种是背景改变: ui->mot ...

  9. 可视化学习Tensorboard

    可视化学习Tensorboard TensorBoard 涉及到的运算,通常是在训练庞大的深度神经网络中出现的复杂而又难以理解的运算.为了更方便 TensorFlow 程序的理解.调试与优化,发布了一 ...

  10. 18.OGNL与ValueStack(VS)-值栈入门

    转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 下面我们建立struts2ognl项目来练习ognl的使用. 步骤一.搭建s ...