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自动更新网站代码的主要内容,如果未能解决你的问题,请参考以下文章
VSCode自定义代码片段15——git命令操作一个完整流程