1

为了更好地理解 Git 和正确的 Web 部署工作流程,我遇到了另一面墙。我是服务器相关软件和 unix 命令的新手,所以在回答时请记住这一点。已经就类似主题提出了很多问题,但我没有找到任何关于特定推送和合并到远程存储库的接收后挂钩。

我为部署设置了 3 个阶段。

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

到目前为止,我已经在本地和暂存环境中启动并运行了 Git。我在登台服务器上设置了一个接收后挂钩。到目前为止,这似乎工作得很好,但似乎这个钩子不允许我推送可以在登台服务器上看到的分支。登台服务器仅提供处于 master 分支状态的页面。这可能是预期的行为。

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

我很确定裸存储库和接收后挂钩将在生产服务器上很好地工作。因为它真的应该只有一种状态。

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

4

1 回答 1

1

如果您无法控制Stagingpost-receive 钩子(Staging即将始终服务master, 期间),您可以随时将您想要的任何分支推送到master远程分支:

git push --force Staging my-funky-branch:master

请注意,像这样重新定义远程分支master将为来自.pullfetchStaging

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

git branch --set-upstream staging-master Staging/master
git checkout staging-master
git merge --no-ff my-funky-branch
git push

如果您可以控制 post-receive 钩子,则可以使用类似的方法自动为您推送的分支提供服务。

于 2012-09-19T23:18:52.847 回答