需求
在开发过程中,会频繁的更新代码,一般操作场景是这样的:
- 本地 git push 提交代码至git服务器
- 远程登录到网站服务器
- 从git服务器上
git pull
拉取最新代码
我们想要做的是:在本地git push
时,能直接部署在网站服务器,自动完成上述的2和3。
解决思路
通过git提供的hook,在代码更新后,执行脚本。首先,将网站服务器同时也作为git服务器。开发人员每次在git push
到远程服务器后,服务器git会触发linux post-update脚本,脚本执行git相关命令把代码更新到项目目录。
实现
服务器端设置
- 进入项目根目录,初始化为git仓库
cd /var/www/html/myproject git init
- 让仓库接受代码提交
git config receive.denyCurrentBranch ignore
- 设置更新钩子 post-update
cd .git/hooks mv post-update.sample post-update
- 修改post-update内容如下
#!/bin/sh unset GIT_DIR cd .. git checkout -f
- 更新git服务
git update-server-info
本地仓库
新项目从git服务器克隆开始
git clone ssh://user@ip/var/www/html/myject
或者,已有本地仓库与远程仓库关联
git remote add origin ssh://user@ip/var/www/html/myject
最后,在本地试一下git push
命令吧!