git自动更新网站代码

Posted xincanzhe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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/bash
DIR=/data/wwwroot/test
git --work-tree=${DIR} clean -fd
git --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

 

以上是关于git自动更新网站代码的主要内容,如果未能解决你的问题,请参考以下文章

宝塔 自动更新代码代码脚本

centOs安装git 自动更新代码

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

Android Place自动填充片段:无法设置文字