Gitlab 将“合并请求”与提交合并

Dan*_*ton 6 merge gitlab merge-request

我相信这是一个愚蠢的问题,但我不明白我应该如何使用gitlab 合并请求推送选项

我有这样的场景:

  • 我有从开发到掌握的开放合并请求
  • 我在开发分支上做了一些更改,并使用正确的选项将它们推送到 gitlab 服务器
git add .
git commit -m 'finish mr'
git push origin develop -o merge_request.merge_when_pipeline_succeeds
Run Code Online (Sandbox Code Playgroud)
  • 我预计此提交的管道将成功合并 MR,但我在 gitlab MR 页面上收到此消息:
@user aborted the automatic merge because source branch was updated just now
@user added 1 commit just now

    8efdbde1 - finish mr
Run Code Online (Sandbox Code Playgroud)

因此,推送似乎会将 MR 设置为允许成功后合并,并由于同一推送的提交而立即中止它。我还尝试使用 /merge 进行快速操作,但结果相同。我知道有gitlab API,但我不能使用它。有谁知道我做错了什么?

编辑:

作为接受的答案建议添加目标分支有帮助,但我还需要添加ci.skip

git push origin $CI_COMMIT_REF_NAME \
-o ci.skip \
-o merge_request.target="$MASTER_BRANCH_NAME" \
-o merge_request.merge_when_pipeline_succeeds \
-o merge_request.create
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 2

您可以看到该错误消息在gitlab-foss提交 882e798中更新,作为最近 GitLab 12.1 的问题 63187MR(合并请求)30249的一部分。

merge_request.merge_when_pipeline_succeeds选项来自gitlab-foss MR 26752(GitLab 11.10,2019 年 4 月),问题 43263发行说明)。
MR 包括:

要创建新的合并请求,请设置其目标分支,并在其管道成功时将其设置为合并:

git push -u origin -o merge_request.create \
  -o merge_request.target=branch1 \
  -o merge_request.merge_when_pipeline_succeeds
Run Code Online (Sandbox Code Playgroud)

更新现有合并请求

当推送具有现有开放合并请求的分支时,targetmerge_when_pipeline_succeeds用于更新合并请求。

所以在你的情况下,也许添加目标:

git push origin develop -o merge_request.merge_when_pipeline_succeeds \
  -o merge_request.target=master
Run Code Online (Sandbox Code Playgroud)