本地开发,三台服务器生产,本地 git push,三台服务器同时更新代码
在三台服务器上初始化三个空的 Repository,也就是说每台服务器下都有这个目录:
/home/user/repository/website.git
本地
cd /home/User/website
git init
git add .
git commit -am "commit"
git remote set-url --add origin [email protected]:/home/user/repository/website.git
git remote set-url --add origin [email protected]:/home/user/repository/website.git
git remote set-url --add origin [email protected]:/home/user/repository/website.git
git push origin master
这样本地的 .git/config 中是这样配置的:
[remote "origin"]
url = [email protected]:/home/user/repository/website.git
url = [email protected]:/home/user/repository/website.git
url = [email protected]:/home/user/repository/website.git
fetch = +refs/heads/*:refs/remotes/origin/*
再在三台服务器下分别执行:
cd /var/www/
/var/www/ $ git clone file:///home/user/repository/website.git
这样三台服务器都有 /var/www/website 目录
然后在每台服务器的 /home/user/repository/website.git/hooks/ 下配置 post-receive 文件:
#!/bin/sh
unset GIT_DIR
NowPath=`pwd`
DeployPath="/var/www/website"
cd $DeployPath
git fetch origin
git pull
cd $NowPath
echo "Finished"
exit 0
如果我登录第一台服务器,在 /var/www/website 目录下改动某个东西,然后 git push 到第一台服务器的 /home/user/repository/website.git 仓库中,那必然导致三个服务器的仓库内容不一样,我在本地 git pull
再 git push
就能将三个服务器的仓库更新成一样的吗?
有没有更好的解决方案?