GIT服务器端部署及自动拉取
背景描述
在刚开始用git的时候,每次都是将本地将代码push到远程仓库,然后再ssh到服务器上git pull,甚是麻烦。后来在项目开发中使用git的时候,发现push之后,编译系统竟然会有自动部署等功能。顿时觉得这等神器,必须学习一下,所以就请教了吴旭东老师。下面就是我通过Git Hook神器将自己的项目自动化部署到服务器的过程。
自动部署理论
首先要明确现在代码的分布情况,开发者电脑上的本地仓库,git服务器上的远端仓库,web服务器上的另一个本地仓库,我们浏览器访问的就是这里的代码。其实自动部署就是要当从开发者本地仓库提交代码到远端仓库的时候,自动把代码部署到web服务器的本地仓库,实现开发者本地仓库和web服务器的本地仓库的同步。(即通过GitHook中的post-receive脚本文件)
服务器安装过程
- 在服务器上创建一个裸仓库(git服务器上的远端仓库)
首先要在服务器上建立一个裸仓库,我存放裸仓库的目录是 ~/cst/git,进入到该目录,然后使用git init --bare 裸仓库名称 创建裸仓库。
裸仓库的仓库名称一般会加上.git结尾的形式,如 automaticgit.git (这也是为什么我们从 GitHub clone 仓库的时候,地址都是 xxx.git 这样的形式的原因)
这个git的名字就是 项目文件夹名.git,git clone时会创建的文件夹名字 - 在服务器上建立一个普通Git仓库用于存放网站的源代码。(web服务器上的另一个本地仓库) 会有一个空仓库提示