我建议您在托管您的实时站点的服务器上也设置一个裸仓库。
要开始工作,您将那个裸仓库克隆到本地开发机器
localhost:~# git clone you@yourlivehost:/path/to/bare /path/to/local/dev
在该仓库中,您可以完成所有开发/提交/分支/合并的工作,完成后,您将推送到裸仓库。
您可以手动登录到您的实时服务器并将更改从裸仓库拉到您的实时服务中,或者让 post-update-hook 为您完成这项工作。
手动(第一次):
localhost:~# ssh you@yourlivehost
yourlivehost:~# cd /path/to/live/server
yourlivehost:/path/to/live/server# git clone /path/to/bare .
手动(其他时间):
localhost:~# ssh you@yourlivehost
yourlivehost:~# cd /path/to/live/server
yourlivehost:/path/to/live/server# git pull
这假设您一直在 master 上工作。如果您遵循更复杂的分支策略(如您提供的链接中所述 - 顺便说一句,这与我喜欢使用的策略相同)您必须确保在推送之前将所有所需的更改从分支开发合并到 master从本地开发主机到裸仓库。
要让钩子自动为您执行此操作,请编辑文件/path/to/bare/hooks/post-update
并填写类似的内容
cd /var/www
git pull origin
确保该文件是可执行的,并且您用于运行 repo 的用户对 webserver-directory 具有写入权限。