Lesstep
GitLab・マージリクエスト・自動マージ・2026年10月24日に確認

GitLab の自動マージが断られた・すぐマージされた・取り消された理由

自動マージは、マージの条件がそろったらマージするよう GitLab に頼むものです。マージの API では GitLab 17.11 から auto_merge: true、それより前は merge_when_pipeline_succeeds: true で、こちらは 17.11 で非推奨になりました。GitLab 17.7 からは、パイプラインだけでなくマージの条件をすべて待ちます(GitLab の自動マージの説明)。それでも GitLab は 405 と答えたり、その場でマージしたり、後で取り消したりします。以下はすべて GitLab のソース(lib/api/merge_requests.rb・app/services/auto_merge/merge_when_checks_pass_service.rb・app/models/merge_request.rb)とマージの API の説明を 2026年10月24日に読んで確かめたものです。

GitLab が auto_merge をどう扱うか

自動マージが設定されると、答えは 200 で、"state":"opened" と "merge_when_pipeline_succeeds":true が付きます。マージトレインを使うプロジェクトでは、GitLab 19.1 から、マージせずにトレインに加えます。

意外な 405 が2つ

GitLab が自動マージを取り消すとき

GitLab の説明では、元のブランチに新しいコミットが push されると、それがレビューされるように自動マージを取り消します。マージの方法が fast-forward か semi-linear で automatic rebase before merge が無効なときは、行き先のブランチにコミットが入っても取り消します。そのリベースが有効なら設定を残す動きは GitLab 19.3 で入りましたが、既定では無効の機能フラグの裏です。GitLab が自動マージを取り消したり打ち切ったりすると、マージリクエストのアクティビティに記録が残ります。

取り消すとき

直し方

IntelliJ IDEA で GitLab のマージリクエストを見るなら

Lesstep の Merge Request Inbox for GitLab は、JetBrains IDE(2024.1 以降)のプラグインです。マージの前にマージの条件を見せ、画面に出ていた先頭のコミットをマージします。パイプラインが動いている間は、マージのダイアログで自動マージを選べます。auto_merge と merge_when_pipeline_succeeds を両方送るので、17.11 の前と後のどちらの GitLab にも通じます。GitLab がその場でマージしたときは、マージしたと言います。1.0.15 からは、GitLab が自動マージを断ったとき(405)、自動マージはマージの方法が求めるリベースを待たないことと、パイプラインが成功せずにもう終わっているなら自動マージにせずにマージすることを言います。GitLab が答えたのに何も設定していなければ、そう言います。それまでは、ふつうのマージの文を出していました。その文が挙げる下書き・スレッド・承認・パイプラインは、どれも自動マージが待つものです。読むのは無料、承認・コメント・マージは Pro(月 US$1.50・30日間の無料試用つき)です。画面は日本語です。

GITLAB は GitLab Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitLab Inc.・JetBrains のいずれとも提携しておらず、承認も受けていません。

ほかに:GitLab のマージの断り(400・401・405・409・422) · GitLab のリベースの断り・失敗(403・409) · GitLab の承認の断り(401・409) · GitLab の「insufficient_scope」 · GitLab の 401「invalid_token」 · GitLab の MR の一覧の断り(400・404) · GitLab の MR の変更が欠ける(「1000+」・too_large) · GitLab の 429「Retry later」(回数の上限) · GitLab のスカッシュでマージが断られる・失敗する · GitLab の「compare_timeout」(差分の上限) · JetBrains の IDE で GitLab のマージリクエストを扱う · English