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

如何在PR直接合并到master后,触发向develop的反向PR以保持分支同步?

从master反向同步到develop分支的解决方案

Bitbucket 方案

手动创建反向PR

如果已经有变更直接合并到master,最快的处理方式是手动在Bitbucket界面创建反向同步PR:

  1. 打开仓库的Pull requests页面,点击「Create pull request」
  2. 源分支选择master,目标分支选择develop
  3. 给PR设置清晰的标题(比如「补同步:master直接合并的变更到develop」),描述里说明是补做跳过develop环节的同步操作
  4. 提交PR后,处理可能出现的代码冲突,确认无误后合并到develop

自动触发反向PR(用Bitbucket Pipelines)

如果想实现自动检测并创建同步PR,可以用Bitbucket Pipelines配置自动化流程:
在仓库根目录新建bitbucket-pipelines.yml文件,内容如下:

pipelines:
  branches:
    master:
      - step:
          name: 自动同步master到develop
          image: atlassian/default-image:3
          script:
            - git config user.name "Bitbucket Pipeline Bot"
            - git config user.email "pipeline@bitbucket.org"
            # 拉取全部分支的最新代码
            - git fetch --all
            # 切换到develop分支并拉取最新版本
            - git checkout develop && git pull origin develop
            # 尝试合并master的变更,有冲突则终止流程(需手动处理)
            - git merge origin/master --no-ff --no-edit || exit 1
            # 创建带时间戳的同步分支
            - SYNC_BRANCH="sync-master-to-develop-$(date +%Y%m%d%H%M%S)"
            - git checkout -b $SYNC_BRANCH
            # 推送同步分支到远程
            - git push origin $SYNC_BRANCH
            # 调用Bitbucket API创建PR
            - curl -X POST -u $BITBUCKET_USER:$BITBUCKET_APP_PASS https://api.bitbucket.org/2.0/repositories/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}/pullrequests \
              -H "Content-Type: application/json" \
              -d '{
                  "title": "自动同步master变更到develop",
                  "source": {"branch": {"name": "'$SYNC_BRANCH'"}},
                  "destination": {"branch": {"name": "develop"}},
                  "description": "自动创建的同步PR:补充直接合并到master但未经过develop的变更"
                }'

配置说明:

  • 需要在仓库的「Repository settings > Pipelines > Repository variables」里添加BITBUCKET_USER(你的Bitbucket用户名)和BITBUCKET_APP_PASS(提前创建的App Password,需授予PR和仓库读写权限)
  • 如果合并时出现冲突,Pipeline会失败,需要手动解决冲突后再创建PR

Jenkins 方案

自动检测并创建反向PR

用Jenkins实现自动化同步的步骤:

  1. 新建Jenkins自由风格项目,触发条件选择「Bitbucket hook trigger for GITScm polling」,确保master分支有推送时自动触发构建
  2. 配置源码管理,拉取仓库的全部分支,勾选「Advanced」里的「Refspec」填写+refs/heads/*:refs/remotes/origin/*
  3. 添加「Execute shell」构建步骤,执行以下脚本:
#!/bin/bash
# 配置Git提交身份
git config user.name "Jenkins同步机器人"
git config user.email "jenkins@your-domain.com"

# 拉取最新代码
git fetch origin
git checkout develop
git pull origin develop

# 检查master是否有develop未同步的提交
UNSYNCED_COMMITS=$(git log develop..origin/master --oneline)
if [ -n "$UNSYNCED_COMMITS" ]; then
  # 创建带时间戳的同步分支
  SYNC_BRANCH="sync-master-to-develop-$(date +%Y%m%d%H%M%S)"
  git checkout -b $SYNC_BRANCH
  # 合并master的变更
  git merge origin/master --no-ff --no-edit
  # 推送到远程仓库
  git push origin $SYNC_BRANCH
  # 调用Bitbucket API创建PR
  curl -X POST -u $BITBUCKET_USER:$BITBUCKET_PASS https://api.bitbucket.org/2.0/repositories/你的仓库所有者/仓库名/pullrequests \
    -H "Content-Type: application/json" \
    -d '{
        "title": "[Jenkins自动同步] master到develop",
        "source": {"branch": {"name": "'$SYNC_BRANCH'"}},
        "destination": {"branch": {"name": "develop"}},
        "description": "自动创建的同步PR,补同步直接合并到master的变更\n未同步提交列表:\n'$UNSYNCED_COMMITS'"
      }'
fi
  1. 在Jenkins全局凭据中添加Bitbucket的用户名和App Password,在构建步骤中引用为环境变量BITBUCKET_USER和BITBUCKET_PASS
  2. 保存项目后,当有变更直接合并到master时,Jenkins会自动检测并创建同步PR到develop

额外预防建议

为了从源头避免这类问题,可以在Bitbucket仓库设置分支权限:

  • 对master分支开启「合并检查」,要求PR必须从develop分支发起
  • 启用「需要至少一个审批」的规则,禁止无审核直接合并到master

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 08:17:45