Dan*_*isp 5 git merge github repository
我们使用前端代码,例如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
Run Code Online (Sandbox Code Playgroud)
但是,这通常会导致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模型.
我们真正需要的是一种技术,它允许我们轻松地将我们的工作部署到预览站点,而不会遇到冲突问题或分支/发布的交叉污染.
我们如何推送我们的开发分支并始终覆盖我们的预览分支?
我们应该使用 git push origin wave2:qa --force 来代替吗?
git push -f ...
Run Code Online (Sandbox Code Playgroud)
-f (--force) 用于强制推送。它将覆盖远程分支的当前内容。您只需验证您是否拥有这样做的权限即可。