我最终对我的github存储库感到一团糟,并且我正在寻找有关如何进行整理并防止将来再次发生的建议。首先,我要说我是系统人员,而不是开发人员,但我负责管理存储库。
我的环境如下: 1个开发服务器,1个生产服务器和1个github存储库。
我当前的问题是: 开发服务器和生产服务器都使用相同的github存储库。我们的一位开发人员已将代码直接推送到github主服务器上,而github主服务器目前正在开发服务器上运行,与此同时,对prod服务器进行了本地更改。开发/远程上的新代码尚未准备就绪,我需要将生产中的本地更改放入github并部署到开发服务器上,而不会覆盖开发上的新代码。
我认为防止这种情况再次发生的解决方案是使开发人员使用分支而不是推入主服务器,并且不再在生产环境中进行本地更改。任何技巧或建议都非常适合。
答案 0 :(得分:0)
最简单的解决方案是创建一个名为production
的新分支,指向要在生产服务器上部署的提交,然后在生产服务器上签出该分支。
然后,开发人员可以随意推送到master
,这是Git上的默认分支。要将生产服务器更新为代码的较新版本,可以将production
分支前进到要部署的提交,将production
推送到GitHub,然后在服务器上执行git pull
生产服务器。
您可以将GitHub配置为对production
分支施加限制,以便开发人员无法推送到该分支,而只允许授权人员修改该分支。
答案 1 :(得分:0)
要整理当前的混乱情况:
从推送到GitHub的生产服务器中获取代码。由于master目前还包含其他内容,因此我们将推送到新的prod
分支。在生产服务器上:
a。 git checkout -b prod
创建一个新的prod
分支。
b。 git commit
将更改提交到本地产品git存储库。
c。 git push -u origin prod
将您的代码推送到GitHub。
现在让我们将其合并到master中。在开发机上:
a。 git checkout master
和git pull
,以确保您是最新的。
b。 git merge prod
将prod分支合并到master分支。
c。 git push
将合并的master分支推送到GitHub。
现在,您剩下一个代表生产的prod
分支和一个包含所有更改的master
分支。是否要重命名这些名称,继续在master上进行开发工作,将master推送到prod等等,完全取决于您。
将来如何避免这种情况:
feature-a
之类的分支,然后在测试代码并准备就绪后打开拉取请求以掌握。