You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure分支策略配置:实现从B分支创建的PR默认合并到B

解决方案

GitHub 平台实现方法

1. 用 GitHub Actions 自动修正 PR 目标分支

在仓库根目录创建 .github/workflows/set-pr-target.yml 文件,内容如下:

name: Set PR Target Branch
on:
  pull_request:
    types: [opened, reopened]

jobs:
  set-target:
    runs-on: ubuntu-latest
    steps:
      - name: Check base branch of source branch
        id: check-branch
        run: |
          # 找出源分支基于哪个主分支创建
          BASE_BRANCH=$(git show-branch --merge-base origin/${{ github.head_ref }} origin/master origin/XD_master | grep -E "(master|XD_master)" | head -n1 | sed 's/.*\[\(.*\)\].*/\1/')
          echo "base_branch=$BASE_BRANCH" >> $GITHUB_OUTPUT

      - name: Update PR target if needed
        if: steps.check-branch.outputs.base_branch == 'XD_master' && github.base_ref != 'XD_master'
        uses: actions/github-script@v6
        with:
          script: |
            github.rest.pulls.update({
              owner: context.repo.owner,
              repo: context.repo.repo,
              pull_number: context.issue.number,
              base: 'XD_master'
            })

这个工作流会在PR创建或重新打开时自动检查:如果源分支是基于XD_master创建的,但PR目标选成了master,就自动把目标分支改成XD_master。

2. 配合分支命名规则加约束

约定从XD_master拉的分支必须带xd-feature/、xd-fix/这类前缀,然后去仓库的Settings → Code and automation → Rulesets里加规则:

  • 规则类型选Pull Request
  • 条件设为源分支匹配 xd-*
  • 动作强制把目标分支设为XD_master

GitLab 平台实现方法

1. 用 CI/CD 脚本修改 PR 目标

在 .gitlab-ci.yml 里加这个任务:

set_pr_target:
  stage: .pre
  rules:
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
  script:
    - |
      # 确定源分支的基准分支
      BASE_BRANCH=$(git merge-base $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME master XD_master)
      if [[ "$BASE_BRANCH" == "XD_master" && "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "XD_master" ]]; then
        curl --request PUT --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \
          "$CI_API_V4_URL/projects/$CI_PROJECT_ID/merge_requests/$CI_MERGE_REQUEST_IID" \
          --form "target_branch=XD_master"
      fi
  tags:
    - gitlab-runner

记得在项目的CI/CD变量里加GITLAB_TOKEN,这个 token 需要有修改合并请求的权限。

2. 用分支保护和模板

去项目设置 → 仓库 → 分支:

  • 给XD_master加分支保护规则,限制只有带指定前缀的分支能合并进来
  • 用分支模板功能,从XD_master创建新分支时,自动把PR目标设为XD_master

跨平台通用方案

  1. 定死分支命名规则:所有从XD_master衍生的分支必须以xd-开头,从master来的分支用prod-前缀
  2. 写个Webhook脚本:监听PR创建事件,根据分支前缀自动改目标分支。脚本用Python或Node.js写就行,部署在自己服务器或者Serverless平台上。

额外提醒

  • 自动化脚本需要有修改PR的权限,别忘配置对应token
  • 可以在PR模板里加提示,明确不同分支该选哪个目标,帮团队成员少犯错误
  • 定期检查脚本运行状态,避免失效

内容的提问来源于stack exchange,提问作者Simon Collatz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 07:00:29