Git:推送到远程存储库时更新网站?

Oli*_*nde 4 git workflow

每当我推送到远程存储库时,我都会想要更新一个网站.我来自一个svn背景,仍然试图找出git.

现在,我做了以下事情:

  • 在包含该网站的本地计算机上设置Git存储库.
  • 将(裸)存储库克隆到我的Web服务器.

现在我有点卡住了.我可以将更改推送到服务器上的裸存储库,但我不知道如何在我的www目录中检出存储库的工作副本,并在我将本地存储库推送到服务器时自动更新它.我可能需要一个钩子脚本吗?

相关问题,使用Git部署PHP,部分回答了我的问题,但我想知道脚本实际上在做什么.

Ode*_*Wat 5

我在凯斯理论网站上找到了一个非常好的(而且优雅的)解决方案

它基本上从一个裸存储库开始,并将工作树更改为 Web 服务器文件夹。之后,它在每次收到推送后使用接收后挂钩来更新工作树。一个优雅且易于遵循的过程!

除了该文章中的设置之外,我还添加了一个从网站位置到 git 存储库位置的软链接“.git”目录:

ln -s /home/caius/git/somesite.git/ /home/caius/vhosts/somesite.com/htdocs/.git
Run Code Online (Sandbox Code Playgroud)

这样我就可以通过登录并在网站文件夹中使用“git checkout”来签出网络服务器上的另一个分支!

我还对这里的 Python 脚本“ygit-push-all.py”进行了稍微修改,以更新我的多台机器,这些机器都使用不同的配置文件运行相同的框架代码。您甚至可以为每个服务器设置一个分支(如演示/开发)。

此外,我将以下别名添加到我的全局 git 配置文件中:

[alias]
    push-all = !ygit-push-all.py
    check-all = !sh -c 'git branch -r -v | grep master | awk \"{ print \\$1, \\$2 }\"'
Run Code Online (Sandbox Code Playgroud)

git push-all将更新我所有的远程位置

git check-all将显示每个远程分支所在的版本