用git管理测试代码和线上代码的问题

现在的项目在线上服务器有两份代码,一个是测试用的,一个是给用户用的也就是线上代码,这两份代码在同一服务器因此具有同样的环境,目的是测试代码没问题了就保证了线上代码没问题,问题是怎样用git管理这两份代码,我有两个想法分别是
1.通过git分支管理,具体如下:
git开两个分支,一个dev,一个master。master分支对应着用户访问的那份代码,dev对应着我们开发人员测试的代码。具体的实现是使用shell脚本写一个‘钩子’,当我推送到dev分支的时候自动更新到测试代码,当我推送到master的时候就更新到用户访问的那份代码。等到测试的代码没问题后,我在本地将dev分支合并到master,然后再push到远程服务器。
2.干脆重新在线上服务器上新建一个仓库,这样就有两个仓库了,一个是线上仓库,一个是线上测试仓库。在我本地也有两份代码,分别对应线上的两个仓库,当测试好了没问题,再推送新的代码到线上,两份代码,两个仓库,完全是平行的。

不知道这两种方法哪个好?

阅读 3.5k
3 个回答

方案1好,但是实际的应用可能会比你描述的更复杂,分享一下我司的组做法。

分支管理

每个项目除了master,dev,qa,各种新 feature 分支,还有 release 分支。

  1. 每个新功能/bug 开发的时候,都会建立一个临时分支,开发测试后,合并回 dev 分支,删除临时分支。
  2. 每个阶段结束后,将 dev 分支 merge 到 qa 分支,各种测试。有问题继续回到1。
  3. qa 分支可以拉出一个 release 分支,各种测试,如果没问题,部署测试。有问题,在这个分支上拉出一个临时分支修 bug,修好了merge回release,删除临时分支。或者 merge 回 dev,回到1。

master 基本是个摆设。

喜欢的话点个赞吧。

不用开两个仓库吧,不然要分支干啥~方案一对于一般的小企业项目绰绰有余了。其实最好的是测试环境和开发环境分开,不然一旦上线之后,一定会出现新的需求,这时候同一个环境既要运行又要开发就很不合适。不过这就又遇到一个问题,就是开发环境和测试环境不同怎么能知道产品在线上是不是能完美运行呢?所以现在提出了新理念devops。建议去研究利用docker实现devops的方案。

个人倾向于两分支。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题