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