Git如何阻止指定commit合并进目标分支 适配的分支管理策略有哪些
单次合并避免带入
feature A提交的解决方案 如果你只是需要解决本次feature B合并到stage A的问题,可以选以下任意一种操作:
- cherry-pick 挑拣提交:先拉取最新的
stage A代码到本地,从stage A切出临时分支feature B-for-stageA,执行git log feature B查出所有属于feature B开发的提交哈希,逐个执行git cherry-pick <commit哈希>到临时分支,解决完冲突后直接把临时分支合并到stage A即可,全程不会带入master里的feature A提交。 - 交互式变基剔除冗余提交:在本地
feature B分支执行git rebase -i <feature A合入master前的最后一个commit哈希>,在弹出的编辑界面中删除所有feature A对应的提交行,仅保留feature B的提交,变基完成后feature B的基线就回到了无feature A的版本,此时再合并到stage A不会带多余内容。
适配该场景的长期分支管理策略
从规则层面规避后续同类问题,可以调整分支流转规则:
- 明确分支定位:
stage A为常规功能预发分支,所有允许进入stage A的功能必须先合并到stage A测试通过后,才能合入master;stage B为特殊功能专属预发分支,仅承接禁止进入stage A的功能测试,这类功能验收通过后直接合入master,永远不允许向stage A合并。 - 调整功能分支切出规则:需要在
stage A测试的功能,统一从最新的stage A分支切出,不要从master切,开发完成后先合并回stage A测试,验收通过后单独把该功能的提交合入master,和master里的特殊功能提交完全隔离。 - 增加平台规则限制:在Gitlab中给
stage A设置分支保护规则,仅允许从stage A切出的功能分支发起合并请求,禁止直接从master、stage B向stage A合并,从权限层面杜绝违禁提交流入。
内容的提问来源于stack exchange,提问作者Om3ga
相关产品推荐
相关产品推荐

