2

我已经阅读了一些关于此的 Stack Overflow 线程,但其中许多似乎没有回答我所问的问题,或者至少有不同的条件似乎不适用于我的问题。

如何设置以下内容?

本地存储库:

  • 总是从远程获取/拉取,比方说live.git,远程bare repo应该是 git 维护的站点的最新稳定版本。拉取将合并到本地 repo 的主分支中。然后,任何本地开发都将在开发分支上完成,并在完成后合并到本地 master,然后推送到远程 Staging repo 的开发分支。

远程存储库:

  • 测试/暂存:一个非裸 git 存储库,它有两个分支:master 和 development。从上面看,任何本地推送的提交都将被合并到远程 Staging 存储库的开发分支中。如果 Staging 环境已经过测试和审查,我会将 Staging 开发分支合并到 Staging master 分支。然后我将主分支(实际推送后接收/更新只有在我在 Staging 的主分支上才会起作用)推送到该分支,该分支bare repo将定义一个post-receive或一个post-update钩子以结帐到服务器上的实时目录.

我的想法是,可以在暂存非裸 repo 上进行测试,并且当每个人看起来都很好时,可以推送到 live 裸 repo。如果有任何问题,那么我可以通过检查上一次提交的暂存提交来回滚,然后将其推回实时裸仓库。

请注意,如果重要的话:我的登台和实时站点位于文档根目录,前者用作子域 (staging..*.com),后者位于站点根目录 (www..*.com)。

我无法让它发挥作用。我假设您可以拥有一个非裸仓库(登台),在同一台服务器上拥有一个裸仓库(实时)作为远程仓库。本地的遥控器将暂存。这样的设置是否可能,如果没有,有人可以推荐一种简单的替代或一致的方式吗?

谢谢!

4

1 回答 1

0

您不需要任何特殊的存储库。每个存储库,无论是否裸露,都提供所有这些功能,作为分支。您描述的每个功能都有分支:开发、分段开发、分段和生产。

然后,您将在分支之间合并,而不是“推送”到远程。添加业务规则,例如

  • “初级开发人员只能致力于开发分支”,
  • “高级开发人员可能会致力于开发或分期开发,并可能合并到分期”,
  • 和“发布工程师可能会合并到生产中”。

您可以将中央存储库设置为裸存储库,而其他任何地方都可以获得非裸存储库。您的测试环境使用 staging-development 或 staging 分支,而您的生产机器使用生产分支。不要在暂存或生产环境中合并;在开发人员的机器上合并并推送到中央仓库。然后你可以拉到staging或po

于 2014-02-02T06:28:54.813 回答