使用一个远程服务器管理两个本地GIT仓库

时间:2019-02-14 16:19:50

标签: git github centos

我最终对我的github存储库感到一团糟,并且我正在寻找有关如何进行整理并防止将来再次发生的建议。首先,我要说我是系统人员,而不是开发人员,但我负责管理存储库。

我的环境如下: 1个开发服务器,1个生产服务器和1个github存储库。

我当前的问题是: 开发服务器和生产服务器都使用相同的github存储库。我们的一位开发人员已将代码直接推送到github主服务器上,而github主服务器目前正在开发服务器上运行,与此同时,对prod服务器进行了本地更改。开发/远程上的新代码尚未准备就绪,我需要将生产中的本地更改放入github并部署到开发服务器上,而不会覆盖开发上的新代码。

我认为防止这种情况再次发生的解决方案是使开发人员使用分支而不是推入主服务器,并且不再在生产环境中进行本地更改。任何技巧或建议都非常适合。

2 个答案:

答案 0 :(得分:0)

最简单的解决方案是创建一个名为production的新分支,指向要在生产服务器上部署的提交,然后在生产服务器上签出该分支。

然后,开发人员可以随意推送到master,这是Git上的默认分支。要将生产服务器更新为代码的较新版本,可以将production分支前进到要部署的提交,将production推送到GitHub,然后在服务器上执行git pull生产服务器。

您可以将GitHub配置为对production分支施加限制,以便开发人员无法推送到该分支,而只允许授权人员修改该分支。

答案 1 :(得分:0)

要整理当前的混乱情况:

  1. 从推送到GitHub的生产服务器中获取代码。由于master目前还包含其他内容,因此我们将推送到新的prod分支。在生产服务器上:

    a。 git checkout -b prod创建一个新的prod分支。

    b。 git commit将更改提交到本地产品git存储库。

    c。 git push -u origin prod将您的代码推送到GitHub。

  2. 现在让我们将其合并到master中。在开发机上:

    a。 git checkout mastergit pull,以确保您是最新的。

    b。 git merge prod将prod分支合并到master分支。

    c。 git push将合并的master分支推送到GitHub。

  3. 现在,您剩下一个代表生产的prod分支和一个包含所有更改的master分支。是否要重命名这些名称,继续在master上进行开发工作,将master推送到prod等等,完全取决于您。


将来如何避免这种情况:

  • 切勿在生产盒上编辑代码。
  • 任何推送到生产环境的代码都应使用发行版标记。如果没有版本控制方案,则应该开始。不需要花哨-您可以从1开始,然后从那里开始。
  • 执行发布过程。例如,master应该只包含准备发布的经过测试的代码。并且,在发布代码时,将对master进行标记,然后将该标记部署到生产环境中。或类似的东西。找出最适合您的方式。
  • 结合发布过程,制定有关将代码推送到何处的策略。大多数组织会要求开发人员将其推入feature-a之类的分支,然后在测试代码并准备就绪后打开拉取请求以掌握。