现在一般都会通过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. numpy的shuffle函数

    import numpy as np from numpy.random import shuffle import pandas as pd df = pd.DataFrame([[1,2,3],[ ...

  2. Spark学习笔记6:Spark调优与调试

    1.使用Sparkconf配置Spark 对Spark进行性能调优,通常就是修改Spark应用的运行时配置选项. Spark中最主要的配置机制通过SparkConf类对Spark进行配置,当创建出一个 ...

  3. serializers 序列化器里面进行 校验等

    一.第一版(一般不用) # 声明序列化器from rest_framework import serializersfrom djangoDome.models import Book class P ...

  4. node进阶之用流实现上传文件

    内容: 1.文件上传基础 2.node文件处理机制 3.用流实现文件上传 1.文件上传基础 前端代码: <form action="localhost:8080/" meth ...

  5. UVA-550

    题意 输入进制数n,第一个乘数的最后一位m,第二个乘数k,乘法的结果为mk, mk的第一位是m,求此时mk的长度 #include<iostream> #include <stdio ...

  6. 关于BeautifulSoup类中的tag对象的string和text属性

    <dl> <dt> 今开 </dt><dd class="s-down">3.87</dd> </dl> & ...

  7. Screen Monitors

    Screen Screen->MonitorCount Monitors Screen->FormCount Screen->Forms[I]->Name

  8. python 网页爬虫,下载网络图片

    # coding=utf-8 import lxml,bs4,re,requests csvContent='' file = open('D:\\tyc_demo.html','rb') soup ...

  9. Pycharm安装autopep8工具

    参考文当:https://www.cnblogs.com/heenhui2016/p/6802122.html

  10. 脚本中 %~dp0

    cmd窗口中 for /? 查询参数含义 %~dp0, 将参数转换为磁盘路径+名字 例: 脚本中一行 %~dp0abc.exe (abc.exe位置c:\test\abc.exe) 展开后则为 c:\ ...