我们使用前端代码,例如HTML,CSS,JS等
我们qa
在Github上有一个预览分支(),当推送到时,会自动将代码部署到预览网站,供我们的QA团队进行测试.
我们将代码编译/构建到dist
目录中,并在预览网站上提供.当然,通常dist
会忽略目录.
我们如何推动我们的开发分支并始终覆盖我们的预览分支?
我们希望忽略任何冲突,并始终使用我们正在推动的新代码.预览分支中的代码永远不会渗透到开发分支中.我们从未在预览分支中直接处理代码.
我们是一个规模虽小但地理位置分散的团队,我们正在开展大型前端项目,并有几个发布浪潮.没有生产因为我们的工作提供给管理与内部CMS系统集成等的其他团队.
该master
分支代表的最后一个版本.通常我们将按顺序工作,即工作wave1
和发布master
,工作wave2
和发布master
等.但是,有时我们需要wave1
在我们工作时应用修补程序wave2
.wave1
需要临时部署修复程序以qa
进行测试.
我们创建功能分支并使用Pull Requests将它们合并到当前波形分支中.
目前,我们使用此策略将当前wave部署到qa
:
git push origin wave2:qa
但是,这通常会导致dist
目录中的冲突,在这种情况下,我们这样做:
git checkout qa
(在qa
本地结账)
git pull
(确保它是最新的)
git checkout wave2
(切换回波浪分支)
git merge -s ours qa
(qa
使用我们的策略合并分支)
git checkout qa
(切换回qa
)
git merge wave2
(合并wave2
)
git push
(推送部署)
现在我注意到这真的搞砸了我们的提交历史,如果我们需要部署一个旧的wave来qa
进行修补程序测试,我们最终可能会在我们的wave1
分支中提交(并且代码几次)我们的wave2
分支.
这对我来说都有点不对劲,但我不确定这里最好的解决方案是什么.我想也许我们正在尝试使用我们的策略将方形钉固定在圆孔中.
我们应该使用git push origin wave2:qa --force
吗?
或者我们应该为预览分支设置不同的遥控器?
或者也许构建步骤应该发生在服务器上,以便dist
目录不在repo中?
很高兴在我们当前的战略之外工作,因为我们想要转向更严格的git flow
模型.
我们真正需要的是一种技术,它允许我们轻松地将我们的工作部署到预览站点,而不会遇到冲突问题或分支/发布的交叉污染.