git自动更新网站代码

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

2.安装git服务

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

3.创建源版本库

创建git管理的用户和组,对git服务进行管理。因为该git账号会被很多人使用进行版本库的克隆,为了安全,禁止使用git用户进行ssh登录[[email protected] git-2.15.2]# groupadd git[[email protected] git-2.15.2]# useradd git -g git[[email protected] git-2.15.2]# passwd git[[email protected] 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[[email protected] git-2.15.2]# cd /home/git/gitrepos/test[[email protected] test]# git init --bare                #源版本库应该为裸版本库,即需要加参数--bare[[email protected] test]# chown -R git:git /home/git/gitrepos    #修改版本库所属用户和组,即git

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

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

4.hooks机制

[[email protected] wwwroot]# vim /home/git/gitrepos/test/hooks/post-receive[[email protected] 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 [email protected]:/home/git/gitrepos/test;
b.在本地新建空目录,创建空的git库,然后与源版本库进行关联;
  $    mkdir test;
  $    git init;
  $    git remote add origin [email protected]:/home/git/gitrepos/test;
c.将本地已存在的git库与源版本库进行关联,假设已存在的git库为oldtest;
  $    cd oldtest;
  $    git remote add origin [email protected]:/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服务器网站目录是否同步更新[[email protected] ~]# ls /data/wwwroot/test

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

原文地址:https://www.cnblogs.com/xincanzhe/p/10693514.html

时间: 2024-11-08 21:29:14

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

通过Git WebHooks+脚本实现自动更新发布代码

需求: 写一个自动化部署脚本,能根据git push动作自动更新发布代码(补丁文件(或更新文件,以下简称补丁)) 解决方案: 通过git webhooks.python脚本.Linux Shell脚本完成,所有动作均自动完成,人工部分仅限于发布补丁文件之前 git webhooks实现触发执行脚本 python脚本用于接收git webhooks的post数据并根据这些数据判断是否执行shell脚本 Linux Shell脚本用于实现部署.备份.回滚等操作 具体步骤(方案实现): 实现原理: 用

通过Git WebHooks+脚本实现自动更新发布代码之shell脚本

前文讲述了<通过Git WebHooks+脚本实现自动更新发布代码>,里面提供了一种自动更新发布代码的脚本编写思路.本文的脚本与前文中的思路不太不同.本脚本以capistrano中的一些思想和理念为依据,用简单好理解的shell脚本实现capistrano原本实现的自动化部署部分. 脚本的一些特点和功能: 解决脚本的符号链接问题,准确获取脚本工作目录(从tomcat脚本中学到): 颜色显示,不同级别的信息用不同的颜色显示(共两种方案,前一种从一位不知名的国外工程师处得到,后一种从lnmp1.2

通过Git WebHooks+脚本实现自动更新发布代码之Shell脚本(二)

依据前文<通过Git WebHooks+脚本实现自动更新发布代码>的解决方案编写的shell脚本,此脚本专门用于更新补丁文件,例如对项目中的文件实现增(add).删(remove).改(update),并且执行相关的命令,如清除缓存.重启服务等. 此Shell脚本目前设计成在本地执行,目前不适合分布式执行的情况.也就是说,此脚本最好与项目在同一个机器上,这个缺陷已经标注在脚本中了,参见脚本中的多个TODO. 脚本完成的工作: 检查配置文件合规性 备份与恢复 增删改文件 执行命令 失败回滚 除上

GIT自动更新操作说明

一.安装GIT 1.下载GIT源码并安装: $ git --version  #先查看GIT是否已经安装,已经安装则不需要重新安装 $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel $ wget http://git-core.googlecode.com/files/git-1.9.0.tar.gz   或者  wget https://www.kernel.org/pu

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

Q: 最近配了个服务器,用的GIT,本地提交后服务器必须再拉取一下才能更新出来..求个提交后自动更新的方法 A: 最佳工具 git hook post-update.sample 改名为post-update 然后加几行简单的代码就能实现你的需求了 例: gitdir=/**** cd $gitdir git checkout 对应分支 git pull end... ------------------------------------- 最简单的办法就是服务器上用一个cron任务,定时拉取

PHP自动更新网站

目前软件开发主流越来越倾向于B/S模式,不同于C/S模式的软件,B/S模式下的WEB程序自动更新是个麻烦问题. 本人利用PHP下载远程文件和ZIP类,写了一个简单的自动更新DEMO,供大家参考. 服务端 目录结构 |data |--20140918.zip |--index.php 其中 data 文件夹用来存放补丁包,index.php 文件用来响应版本数据给客户端. index.php <?php sleep(3); header('Content-Type:application/json

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

  1. git clone ssh://flycm.intel.com/scm/at/atSrc 或者git clone ssh://flycm.intel.com/scm/at/atJar 或者git clone ssh://flycm.intel.com/scm/at/atFramework 2. git checkout cpeg/scm/stable 切换分支,然后更新代码 3. git pull 先把远程分支上最新的代码拉到本地,之后在做相应修改 4. git status 查看本地

git自动补全代码

如果你用的是 Bash shell,可以试试看 Git 提供的自动补全脚本.下载 Git 的源代码,进入contrib/completion 目录,会看到一个 git-completion.bash 文件.将此文件复制到你自己的用户主目录中(译注:按照下面的示例,还应改名加上点:cp git-completion.bash ~/.git-completion.bash),并把下面一行内容添加到你的 .bashrc 文件中: source ~/.git-completion.bash 也可以为系统

iOS添加自动更新的代码

- (void)versionUpdate{ //获得当前发布的版本 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ //耗时的操作--获取某个应用在AppStore上的信息,更改id就行 __weak LoginViewController *weakSelf = self; NSString *string = [NSString stringWithContentsOfURL: