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

如何在Gitlab CI/CD流程中实现master自动同步合并到develop分支

GitLab CI/CD自动同步master与develop分支解决方案

针对master分支合入hotfix等改动后未同步到develop,导致分支偏差、后续合并冲突的问题,可通过以下两种可落地的方案实现自动化同步:

方案1:CI流水线自动同步(推荐)

前置准备

在GitLab项目「设置-访问令牌」中创建项目访问令牌,勾选write_repository权限,将生成的令牌存入项目「设置-CI/CD-变量」中,命名为GITLAB_TOKEN,勾选「隐藏变量」「仅受保护分支可用」避免泄露。

配置CI任务

在项目根目录的.gitlab-ci.yml中添加如下同步任务,仅当master分支有新代码推送时触发:

sync_master_to_develop:
  stage: sync
  # 仅master分支的push事件触发
  only:
    refs:
      - master
    variables:
      - $CI_PIPELINE_SOURCE == "push"
  before_script:
    # 配置git用户信息和仓库权限
    - git config --global user.name "CI同步机器人"
    - git config --global user.email "ci-sync@yourcompany.com"
    - git remote set-url origin "https://oauth2:${GITLAB_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git"
    - git fetch origin --prune
  script:
    # 切换到develop分支尝试合并master改动
    - git checkout -b develop origin/develop
    - git merge origin/master --no-ff --no-edit
    - |
      if [ $? -eq 0 ]; then
        # 无冲突直接推送
        git push origin develop
        echo "同步成功:master改动已自动合入develop"
      else
        # 有冲突自动创建合并请求通知相关人员处理
        echo "存在合并冲突,自动创建同步MR"
        curl --request POST \
          --url "https://${CI_SERVER_HOST}/api/v4/projects/${CI_PROJECT_ID}/merge_requests" \
          --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \
          --header "Content-Type: application/json" \
          --data '{
            "source_branch": "master",
            "target_branch": "develop",
            "title": "同步master改动到develop(需解决冲突)",
            "description": "master分支有新改动合入,自动创建此MR进行同步,请解决冲突后合并",
            "assignee_ids": ['${GITLAB_USER_ID}']
          }'
      fi

如果不需要自动合入,仅想自动提醒同步,可删除合并成功后push的逻辑,无论是否有冲突都直接创建合并请求,由开发人员审核后合入,安全性更高。

方案2:Git Flow流程约束

如果团队严格遵循Git Flow工作流,可在GitLab合并请求规则中添加限制:所有源分支匹配hotfix/*的合并请求,必须同时创建指向master和develop的两个合并请求,仅当两个MR都完成审批后才能执行合并操作,从流程层面避免hotfix合入master后遗漏同步到develop。

注意事项

  • 绝对不要在同步脚本中使用--force强制推送,避免覆盖develop分支上未合入master的功能代码
  • 同步逻辑需要先在测试项目验证无误后再应用到生产项目,避免误操作导致代码丢失
  • 建议定期检查两个分支的差异,避免特殊场景下同步逻辑失效导致分支偏差过大

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:18:03