1.实现过程
在linux上安装git服务、创建源版本库、从源版本库克隆得到网站目录,然后利用git中的hooks机制,在git push推送代码到源版本库的时候,触发编写的shell脚本,更新网站目录下的代码。

2.安装git服务

[root@xxx ~]# cd /usr/local/src[root@xxx src]# wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.15.2.tar.gz[root@xxx src]# tar -zxvf git-2.15.2.tar.gz[root@xxx src]# cd git-2.15.2[root@xxx git-2.15.2]# ./configure --prefix=/usr/local/git[root@xxx git-2.15.2]# make && make install
对git config进行配置,表明当前是哪个用户进行的git操作[root@xxx git-2.15.2]# git config --global user.name xincanzhe[root@xxx git-2.15.2]# git config --glocal user.email 1900103003@qq.com[root@xxx git-2.15.2]# git config --list

3.创建源版本库

创建git管理的用户和组,对git服务进行管理。因为该git账号会被很多人使用进行版本库的克隆,为了安全,禁止使用git用户进行ssh登录[root@xxx git-2.15.2]# groupadd git[root@xxx git-2.15.2]# useradd git -g git[root@xxx git-2.15.2]# passwd git[root@xxx git-2.15.2]# vim /etc/passwd

将git:x:1001:1001::/home/git:/bin/bash改为git:x:1001:1001::/home/git:/bin/git-shell
自定义的总版本库目录:/home/git/gitrepos测试项目的版本库目录:/home/git/gitrepos/test[root@xxx git-2.15.2]# cd /home/git/gitrepos/test[root@xxx test]# git init --bare                #源版本库应该为裸版本库,即需要加参数--bare[root@xxx test]# chown -R git:git /home/git/gitrepos    #修改版本库所属用户和组,即git

3.从源版本库克隆得到网站目录

自定义网站目录:/data/wwwroot/test[root@xxx wwwroot]# git clone git@48.107.56.223:/home/git/gitrepos/test   #格式 git clone 用户@IP:源版本库目录[root@xxx wwwroot]# chown -R git:git /data/wwwroot/test            #修改网站所属用户和组,即git

4.hooks机制

[root@xxx wwwroot]# vim /home/git/gitrepos/test/hooks/post-receive[root@xxx wwwroot]# chmod +x /home/git/gitrepos/test/hooks/post-receive

post-receive文件内容为:#!/bin/bashDIR=/data/wwwroot/testgit --work-tree=${DIR} clean -fdgit --work-tree=${DIR} checkout --force

5.测试
在window环境下,安装对应的git服务(同样需要配置git config),然后创建git库。创建git库有三种方式:
a.从源版本库克隆;
  $    git clone git@48.107.56.223:/home/git/gitrepos/test;
b.在本地新建空目录,创建空的git库,然后与源版本库进行关联;
  $    mkdir test;
  $    git init;
  $    git remote add origin git@48.107.56.223:/home/git/gitrepos/test;
c.将本地已存在的git库与源版本库进行关联,假设已存在的git库为oldtest;
  $    cd oldtest;
  $    git remote add origin git@48.107.56.223:/home/git/gitrepos/test;

这边仅举例从源版本库克隆的方式:$    cd test$    touch readme.txt$    git add readme.txt$    git commit -m "add readme.txt file"$    git status$    git push -u origin master
查看48.107.56.223服务器网站目录是否同步更新[root@xxx ~]# ls /data/wwwroot/test

6.其他git相关命令
版本库放在github官网,需要ssh方式连接,生成公钥:ssh-keygen  -t  rsa  -C  "github账号"
拉取远程版本库代码:git  pull  origin  master

git自动更新网站代码的更多相关文章

  1. svn自动更新网站代码

    运行环境说明:svn的执行目录: /usr/bin/svnsvn版本库目录: /usr/local/nginx/html/svnrepos/coinhello (其中svnrepos是我各个项目版本库 ...

  2. 后盾网lavarel视频项目---phpstorm 配置ftp, 自动更新同步代码

    后盾网lavarel视频项目---phpstorm 配置ftp, 自动更新同步代码 一.总结 一句话总结: 1.在phpstorm中设置:路径Tools/Deployment/Configuratio ...

  3. Git github webhook 自动更新/部署代码 php自动更新脚本

    这几天尝试了利用github的webhook,当代码更新到github,我们的测试服务器自动更新最新的gitbub仓库代码. 先列几个大概步骤,有时间再补充详细 1 . 服务器生成ssh key,一般 ...

  4. git 远程版本库,github提供服务原理,git自动更新发送邮件

    1.安装好Linux,安装好Git(192.168.1.239) 2.创建一个用户zph(让此用户提供git on server),密码设置为12345678 # useradd zph # pass ...

  5. ***git 本地提交后如果让服务器上的GIT 自动更新拉取

    Q: 最近配了个服务器,用的GIT,本地提交后服务器必须再拉取一下才能更新出来..求个提交后自动更新的方法 A: 最佳工具 git hook post-update.sample 改名为post-up ...

  6. 在linux写一个shell脚本用maven git自动更新代码并且打包部署

    服务器上必须安装了git maven jdk 并且配置好环境变量 实际服务器中可能运行着多个Java进程,所以重新部署的时候需要先停止原来的java进程,写一个按照名称杀死进程的脚本 kill.sh ...

  7. git fetch 更新远程代码到本地仓库

    理解 fetch 的关键, 是理解 FETCH_HEAD,FETCH_HEAD指的是: 某个branch在服务器上的最新状态’.这个列表保存在 .Git/FETCH_HEAD 文件中, 其中每一行对应 ...

  8. git克隆/更新/提交代码步骤及示意图

      1. git clone ssh://flycm.intel.com/scm/at/atSrc 或者git clone ssh://flycm.intel.com/scm/at/atJar 或者g ...

  9. 利用jenkins+git自动执行接口测试代码

    事前准备 部署好jenkins.申请一个码云账号.代码同步至码云 1.在码云上新建一个项目,并把代码同步上去 我设置成了私有项目 2.为项目添加部署公钥 因为是私有项目,所以需要添加一个部署公钥,不然 ...

随机推荐

  1. UIButton的探秘

    原文链接 sizeToFit()和sizeThatFits(_:) sizeToFit()会调用sizeThatFits(_:)方法,将现在的frame作为参数.然后根据函数返回的结果更新view. ...

  2. 【随记】SQL备份一张表的数据

    SQL Server: SELECT  *  INTO  table_bak   FROM   table Oracle.MySQL.SQLite: CREATE TABLE table_bak AS ...

  3. [原创] 项目 watch EMFILE 报错处理过程

    目录 事件 处理过程 参考资料 小知识点 单进程文件句柄限制 系统总文件句柄限制 inotify 文件系统事件监控 事件 公司XX游戏 S114服启动失败(使用 pomelo - node.js 框架 ...

  4. java面向对象之封装性

    面向对象的特征之一:封装和隐藏: 一.问题的引入: 当创建一个类的对象以后,可以通过“对象.属性”的方式,对对象的属性进行赋值.这里,赋值操作要受属性的数据类型和存储范围的制约.除此之外,没有其他制约 ...

  5. HTML attribute 与 DOM property 的对比

    HTML attribute vs. DOM property 要想理解 Angular 绑定如何工作,重点是搞清 HTML attribute 和 DOM property 之间的区别. attri ...

  6. docker 安装sentry

    主页:https://sentry.io/welcome/ 环境安装 请先安装 Docker 1.10+ ,使用 CE 版本:安装文档,写的很清晰,不详述:因为国内网络环境问题,一般建议 docker ...

  7. chromedriver for mac

  8. 街机模拟.samsho2

    1.sdyrugal https://www.douyu.com/599516 2.红中哥:西瓜视频  搜索 "红中哥游戏解说" 我搜索到的地址:https://live.ixig ...

  9. selenium+Python(截图保存错误页面)

    异常捕捉与错误截图 创建错误截图文件夹,目录结果如下: 用例不可能每一次运行都成功,肯定运行时候有不成功的时候,关键是我们捕捉到错误,并以把并错误截图保存,这将是一个非常棒的功能,也会给我们错误定位带 ...

  10. CentOS7 配置免密登陆

    首先我通过VMware配置了4台机器 然后依次更改每台机器的hosts文件为:   (/etc/hosts) 192.168.32.128 linux1192.168.32.130 linux2192 ...