使用master、task双分支的GIT分支策略如何避免master分支代码丢失
忘记执行第3步(合并最新master代码)的后果
- PR无法自动合并:GitHub会直接提示分支存在冲突,无法执行合并操作。你必须回到本地拉取最新master代码、合并到你的Task分支、解决完所有冲突后重新推送,才能继续处理PR,反而增加额外工作量。
- 逻辑兼容隐患:就算没有代码行级的冲突,你的代码也可能和master上新增的代码逻辑不兼容,合入后直接导致生产故障。比如其他开发者刚修改了公共依赖函数的入参规则,你没有同步最新代码的话,还是基于旧逻辑写的调用代码,上线后会直接报错。
- 测试结果无效:你本地测试通过的版本是基于拉取Task分支时的旧版master,合入新版master后功能可能直接失效,前期的测试工作完全作废。
- 分支历史混乱:如果管理员强行合入未同步的分支,会产生大量冗余的合并提交,甚至会打乱master的提交时间线,后续排查问题时很难定位引入bug的版本。
避免master分支代码丢失的方案
- 开启GitHub分支保护规则:给master分支设置强制保护,禁止任何人直接推送代码,所有改动必须通过PR合入;同时开启合并前要求分支保持最新的校验规则,系统会自动拦截未同步master最新代码的PR,从平台层面避免漏做第3步的情况。
- 强制CI校验流程:PR提交后自动触发全量单元测试、集成测试、代码规范校验,任何一项不通过都禁止合入,避免逻辑不兼容的代码进入master。
- 优化分支操作流程:要求所有开发者拉取Task分支前必须先更新本地master,从源头降低冲突概率,参考操作命令:
git checkout master git pull origin master git checkout -b 对应Task分支名 - 关闭master分支的强制推送权限:在分支保护规则中直接禁止
git push -f等强制覆盖操作,避免误操作覆盖master的历史代码。 - 定期备份master分支:可以配置自动化脚本每天给master分支打快照tag存档,就算出现极端异常情况,也可以快速回滚到历史正常版本,不会出现代码彻底丢失的问题。
内容的提问来源于stack exchange,提问作者variable
相关产品推荐
相关产品推荐

