基于Tag创建Patch并提交PR时如何避免混入development分支未测试提交?
Patch分支PR评审防未测试提交方案
核心原则
全程保持Patch分支与development等包含未发布内容的分支物理隔离,所有操作基准锚定原始发布Tag。
具体操作步骤
- 步骤1:创建Patch分支并推送远端
基于正式发布Tag创建独立Patch分支,统一使用patch/前缀命名,推送时明确指定远端分支,不绑定默认上游:# 基于正式Tag vx.y.z创建功能修复分支 git checkout -b patch/[修复内容标识] vx.y.z # 直接推送对应远端分支,不设置--set-upstream git push origin patch/[修复内容标识] - 步骤2:配置PR规则
提交PR时,合并目标分支必须选择当前同名称的patch/[修复内容标识]分支,而非development或其他环境分支;仓库管理员可在后台配置规则,限制patch/前缀分支的PR合并目标只能为同系列Patch分支,禁止默认指向development。 - 步骤3:本地操作防污染约定
所有开发者在patch/前缀分支下操作时,禁止直接执行git pull,必须明确指定拉取的远端对应Patch分支,避免误拉其他分支内容:# 仅拉取当前Patch分支的远端更新 git pull origin patch/[修复内容标识] - 步骤4:CI加自动校验阻断污染
在PR的CI流水线中加入提交基准校验步骤,自动检查Patch分支是否混入基准Tag之后的未测试提交,校验不通过直接阻断PR合并:# 校验当前分支的祖先是否包含基准Tag,返回0表示符合要求,非0表示混入其他提交 git merge-base --is-ancestor vx.y.z HEAD - 步骤5:评审通过后流程
PR评审合并完成后,直接从当前patch/[修复内容标识]分支打新的Patch版本Tag,走test->qa->prod的正常发布流程;发布完成后将修复提交单独cherry-pick到development分支同步内容,不要直接合并Patch分支,避免带入冗余历史。
可选增强配置
- 在仓库中设置
patch/*分支的保护规则,禁止直接推送、禁止合并非同系列Patch分支的内容 - 可在本地git配置中加入钩子,检测到当前处于
patch/前缀分支时,拦截无参数的git pull操作
内容的提问来源于stack exchange,提问作者Anders
相关产品推荐
相关产品推荐

