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

如何在Bitbucket Pipeline中合并stag/prod分支时忽略指定文件并加手动审批

Bitbucket Pipeline 实现分支合并忽略指定文件的实践方案

核心思路

既然本地已经通过ours合并驱动实现了忽略指定文件的需求,在Bitbucket Pipeline中可以复用这个逻辑,结合Pipeline的手动审批步骤,完成自动化合并流程。

具体实现步骤

1. 配置仓库的.gitattributes文件

确保仓库根目录下的.gitattributes已经配置了需要忽略的文件/文件夹的合并策略,和本地保持一致:

buildspec.yml merge=ours
appspec.yml merge=ours
scripts/ merge=ours

这个配置会告诉Git在合并时,对于这些路径直接保留当前分支(prod分支合并时就是保留prod的版本)的内容,无需冲突处理。

2. 编写Bitbucket Pipeline配置文件(bitbucket-pipelines.yml)

配置触发条件、手动审批步骤以及合并逻辑:

pipelines:
  pull-requests:
    '**':
      - step:
          name: 预合并检查
          script:
            - echo "执行代码检查、单元测试等预合并验证(可根据需求添加)"
          trigger: automatic
      - step:
          name: 等待手动审批
          trigger: manual
          script:
            - echo "等待开发者审核通过后触发合并"
      - step:
          name: 执行合并并保留指定文件版本
          script:
            # 克隆prod分支并拉取最新代码
            - git clone -b prod $BITBUCKET_GIT_HTTP_ORIGIN prod-repo
            - cd prod-repo
            # 配置Git用户(Pipeline环境需要)
            - git config user.name "Bitbucket Pipeline"
            - git config user.email "pipeline@bitbucket.org"
            # 合并stag分支,利用.gitattributes的ours策略自动忽略指定文件
            - git merge --no-ff $BITBUCKET_BRANCH
            # 推送合并后的prod分支
            - git push origin prod

3. 流程验证

  • 发起从stag到prod的拉取请求,Pipeline会自动触发第一个预检查步骤;
  • 预检查通过后,进入手动审批环节,需要指定的开发者/负责人点击审批;
  • 审批通过后,Pipeline执行合并步骤,Git会根据.gitattributes的配置自动保留prod分支上buildspec.yml、appspec.yml和scripts文件夹的版本,合并stag分支的其他变更(比如commonfile.txt);
  • 合并完成后,prod分支会包含stag的非忽略文件变更,同时保留自身的指定文件版本。

注意事项

  • 确保Pipeline的运行账号拥有仓库的读写权限,能够执行合并和推送操作;
  • 如果预合并需要额外的验证(比如代码扫描、测试),可以在第一个步骤中添加对应的命令;
  • 若合并过程中出现其他文件的冲突,需要在Pipeline中添加冲突处理逻辑,或者提前在PR中解决冲突后再触发合并。

内容的提问来源于stack exchange,提问作者Desh Deepak Dhobi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 08:02:11