我已经阅读了一些关于此的 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)。
我无法让它发挥作用。我假设您可以拥有一个非裸仓库(登台),在同一台服务器上拥有一个裸仓库(实时)作为远程仓库。本地的遥控器将暂存。这样的设置是否可能,如果没有,有人可以推荐一种简单的替代或一致的方式吗?
谢谢!