Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大项目。Git是Linus Torvalds为帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。Git与常用的版本控制工具CVS、Subversion等不同,它采用分布式版本库的方式,不必服务器端软件支持。

以前尝试部署代码到服务器的方式有用到Github Hook或者ftp,但使用起来都有各自的缺陷,然后就发现了git hooks这个方法,查了一些资料再自己尝试过后,觉得还不错,记录下简单流程。

在服务器初始化一个远程git仓库

git initgit init --bare 的区别

初始化出来的仓库是不一样的,前者初始化的是一个普通的仓库,其中 .git 文件夹是隐藏的,并且能看见该仓库下所有的源码。而后者初始化出来的仓库中的文件,就是 .git 中的文件夹,但不能像前者那样直接浏览或修改仓库中的代码。

使用 git init --bare 初始化一个远程仓库。

该仓库是用于项目部署的。在我们本地开发完成后,将项目push至该仓库后,将自动部署网站。

1
2
3
root@iZbp1cc04oqq: mkdir -p /git/laravle-vue.git
root@iZbp1cc04oqq: cd /git/laravle-vue.git
root@iZbp1cc04oqq: git init --bare
网站的根目录git clone服务器仓库
1
2
3
4
root@iZbp1cc04oqq: cd /var/www/html
root@iZbp1cc04oqq: git init
root@iZbp1cc04oqq: git clone /git/laravel-vue.git
root@iZbp1cc04oqq: chmod -R 777 ../laravel-vue
为远程仓库设置一个 hook
1
2
3
root@iZbp1cc04oqq: cd /git/laravel-vue.git/hooks
root@iZbp1cc04oqq: vim post-receive
vim`编辑`post-receive
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/sh
unset GIT_DIR
NowPath=`pwd`
DeployPath="/var/www/html/laravel-vue"
cd $DeployPath
git add . -A && git stash
git pull origin master
composer install --ignore-platform-reqs
#下面两步是我同步vue代码
#npm install #安装npm包
#npm run production

cd $NowPath
echo "同步完成"
exit 0

该脚本添加可执行权限

1
root@iZbp1cc04oqq: chmod +x post-receive

为本地仓库添加remote源

这个客户端本地仓库,即开发的机子的本地仓库,添加remote源,以后往这个remote push代码时,就会自动触发上面的脚本。

1
2
$   git remote add deploy root@ip:/git/laravel-vue.git   //服务器上我用的root用户
$ git push deploy master

如图

image

评论