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

如何一次性为多分支的相同变更创建多个Pull Request

一次性为多分支创建相同变更Pull Request的解决方案

针对你需要为Release、Main、Demo三个分支同步热修复并创建PR的场景,以下是几种可落地的自动化方案:

1. 本地Git脚本自动化

通过编写Shell脚本,结合Git和代码托管平台的CLI工具(如GitHub CLI gh、GitLab CLI glab),一键完成cherry-pick、推送和PR创建操作。

示例脚本(GitHub环境)

#!/bin/bash

# 配置参数
HOTFIX_COMMIT="你的热修复提交哈希值"
RELEASE_BRANCH="release"
MAIN_BRANCH="main"
DEMO_BRANCH="demo"

# 同步到Release分支(如果热修复已直接提交到Release,可跳过此段)
git checkout $RELEASE_BRANCH
git pull origin $RELEASE_BRANCH
git cherry-pick $HOTFIX_COMMIT
git push origin $RELEASE_BRANCH
gh pr create --base $RELEASE_BRANCH --head $(git rev-parse --abbrev-ref HEAD) --title "紧急热修复:生产环境问题修复" --body "修复生产环境紧急问题"

# 同步到Main分支
git checkout $MAIN_BRANCH
git pull origin $MAIN_BRANCH
git cherry-pick $HOTFIX_COMMIT
git push origin $MAIN_BRANCH
gh pr create --base $MAIN_BRANCH --head $(git rev-parse --abbrev-ref HEAD) --title "紧急热修复:同步到Main分支" --body "同步Release分支的热修复变更到Main"

# 同步到Demo分支
git checkout $DEMO_BRANCH
git pull origin $DEMO_BRANCH
git cherry-pick $HOTFIX_COMMIT
git push origin $DEMO_BRANCH
gh pr create --base $DEMO_BRANCH --head $(git rev-parse --abbrev-ref HEAD) --title "紧急热修复:同步到Demo分支" --body "同步Release分支的热修复变更到Demo"

使用说明

  • 提前安装并认证GitHub CLI(gh auth login)
  • 脚本执行前替换HOTFIX_COMMIT为实际的热修复提交哈希
  • 如果遇到冲突,脚本会中断,解决冲突后重新执行即可

2. CI/CD流水线自动触发

利用代码托管平台的CI/CD工具(如GitHub Actions、GitLab CI),在热修复合并到Release分支后,自动同步变更到其他分支并创建PR。

示例GitHub Actions配置

name: 自动同步热修复到多分支
on:
  pull_request:
    types: [closed]
    branches: [release]

jobs:
  sync-hotfix:
    if: github.event.pull_request.merged == true
    runs-on: ubuntu-latest
    steps:
      - name: 拉取代码
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: 配置Git身份
        run: |
          git config user.name "GitHub Actions"
          git config user.email "actions@github.com"

      - name: 同步到Main分支并创建PR
        run: |
          git checkout main
          git pull origin main
          git cherry-pick ${{ github.event.pull_request.head.sha }}
          git push origin main:hotfix-sync-main
          gh pr create --base main --head hotfix-sync-main --title "自动同步:Release热修复到Main" --body "热修复合并到Release后自动同步"
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: 同步到Demo分支并创建PR
        run: |
          git checkout demo
          git pull origin demo
          git cherry-pick ${{ github.event.pull_request.head.sha }}
          git push origin demo:hotfix-sync-demo
          gh pr create --base demo --head hotfix-sync-demo --title "自动同步:Release热修复到Demo" --body "热修复合并到Release后自动同步"
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

使用说明

  • 将此配置文件放在仓库的.github/workflows/目录下
  • 流水线会在Release分支的PR合并后自动触发
  • 若同步时出现冲突,流水线会失败,需手动解决冲突后重新运行

3. 优化分支策略减少重复操作

调整分支管理流程,从根源减少重复PR的需求:

  • 让Demo分支定期从Main分支拉取变更,而非单独同步热修复
  • 热修复先合并到Release,再将Release分支合并到Main(而非cherry-pick),Demo同步Main即可
  • 统一使用独立的热修复分支,合并到Release后,再基于该分支向Main和Demo提交PR

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:25:18