Git两分支(master与stage)同步及工作流程调整可行性咨询
当然可行!这绝对是个能让你的生产环境跟上测试版本进度、同时建立稳定发布流程的好方案,我来帮你梳理清楚具体操作和规范流程:
一、先搞定两个分支的历史同步(关键前提)
现在你的master分支(对应测试版本)比stage分支(对应生产版本)新了2个月,里面肯定包含这段时间测试验证过的功能修复和优化,所以第一步得把这些更新同步到生产分支,不然生产版本会一直落后于测试版本:
- 先拉取远程仓库的所有最新代码:
git fetch origin - 切换到
stage分支,拉取最新的生产分支代码:git checkout stage git pull origin stage - 把
master的更新合并到stage:git merge master- 这一步大概率会碰到代码冲突,别慌,手动解决冲突就行,一定要确保合并后的代码逻辑是正确的
- 合并完成后,先部署到测试URL(原来
master对应的测试环境)验证一遍,确认没有问题后,再推送到远程stage分支,同时部署到生产环境:git push origin stage
二、规范后续的工作流(完全符合你的需求:stage修改测试→推生产)
分支同步完成后,你可以建立这套稳定的工作流:
- 日常开发&测试:
- 所有功能开发、bug修复都直接在
stage分支进行(如果是团队协作的话,更建议从stage切出单独的feature/xxx或bugfix/xxx分支,开发完再合并回stage,这样能避免多人提交的冲突,也方便代码评审) - 每次提交代码后,自动或手动部署到测试URL验证,确保功能正常、没有回归问题
- 所有功能开发、bug修复都直接在
- 发布到生产:
- 当
stage分支的代码经过充分测试,确认可以上线后,直接推送到远程stage分支(如果用了子分支,先合并到stage再推送) - 触发部署流程,把
stage分支的代码部署到生产URL
- 当
- 分支维护小技巧:
- 每次发布生产后,给
stage分支打一个版本标签,方便后续回溯问题:git tag -a v1.2.0 -m "生产版本v1.2.0" git push origin v1.2.0 - 定期清理已经合并的子分支,避免仓库分支杂乱
- 每次发布生产后,给
三、几个避坑提醒
- 如果是团队协作,千万别直接在
stage上硬提交!用子分支+合并请求(PR)的方式更稳妥,还能做代码评审 - 每次合并或发布前,一定要在测试环境充分验证,哪怕是小改动也别跳过这一步,不然生产环境出问题就得不偿失了
- 保留好历史标签,万一生产环境出问题,能快速回滚到上一个稳定版本:
git checkout v1.1.0 # 部署这个版本到生产即可
内容的提问来源于stack exchange,提问作者Dextranovich




