远程服务器上的Git存储库和后接收挂钩

时间:2012-09-19 22:37:30

标签: git workflow git-post-receive

为了更好地理解Git和正确的Web部署工作流程,我正在寻找另一面墙。对于服务器相关的软件和unix命令,我是新手,所以在回答时请记住这一点。关于类似主题已经提出了一系列问题,但我没有找到任何关于特定推送的内容,并且使用post-receive hook将其合并到远程存储库。

我有3个阶段进行部署。

生产(远程服务器我假设裸存储库)
^
暂存(远程服务器裸存储库)
^
开发(本地机器)

到目前为止,我已经在我的本地和登台环境中运行了Git。我在登台服务器上设置了一个post-receive hook。到目前为止,这似乎工作得很好,但似乎这个钩子不允许我推送可以在登台服务器上看到的分支。登台服务器仅提供主分支状态的页面。这可能是预期的行为。

我应该在登台服务器上使用此挂钩吗?我似乎可以让更改生效的唯一方法是首先合并到我本地计算机上的主服务器,然后将其推送到暂存。这似乎不对,因为如果变化需要调整。我必须撤消本地的合并吗?

我很确定裸存储库和post-receive hook在生产服务器上运行良好。因为它应该只有一个状态。

这些可能都是正常行为,我的工作流程可能不正确。对此或指导的任何帮助表示赞赏。我搜索了这个,我找不到任何明确的文档。

1 个答案:

答案 0 :(得分:1)

如果您无法控制Staging收件后挂钩(即Staging将始终提供master,期间),您可以随时将所需的任何分支推送到{{ 1}}远程分支:

master

请注意,重新定义此类远程git push --force Staging my-funky-branch:master 分支会给master下游的任何人(可能pullfetch来自的任何人)带来问题。

您还可以创建一个特殊的本地分支来跟踪Staging Staging,并将所有更改合并到该分支。

master

如果您可以控制收件后挂钩,可以使用this之类的内容自动为您推送的分支服务。