Git hook实现自动部署
Git Hook 是 Git 提供的一个钩子,能被特定的事件触发后调用。其实,更通俗的讲,当你设置了 Git Hook 后,只要你的远程仓库收到一次 push 之后,Git Hook 就能帮你执行一次 bash 脚本。
在远程服务器上,首先新建一个Git库,进入目录/root
cd /root
mkdir testRepo
cd testRepo
git init --bare
在远程服务器再初始化一个普通的本地Git仓库,这个本地仓库的作用是拉取远程的仓库
cd /var/www/ #进入远程项目根目录
git clone /root/testRepo #复制自己的上述的git库
编辑bash,编辑给自己的Git添加一个hook(可以理解为一个回调)
cd /root/testRepo/hooks
vim post-receive #如果没有这个文件,新建一个
编辑这个文件
#!/bin/sh
unset GIT_DIR
cd /var/www/testRepo
git add . -A && git stash
git pull origin master
记得为添加可执行的权限
chmod +x pose-receive
在你的本地仓库(本机)
建立与远程Git仓库的链接
git remote add test(可以根据需要命令,是远程仓库的一个标识) 主机用户@服务器的IP:/root/testRepo
建立链接成功以后,本地开发的修改可以通过以下的方式推送到远程服务器上:
git push test master
当远程服务器的Git仓库收到push过来的改变的代码时,会自动回调hook,执行/root/testRepo/hooks/post-receive里面的脚本
git pull origin master
因为我们远程部署的项目是从/root/testRepo 直接clone的,所以会从/root/testRepo拉取最新的代码,从而更新我们服务器部署的项目/var/www/testRepo。