GitHub:マージの方法が断られた理由
プルリクは PUT /repos/持ち主/リポジトリ名/pulls/番号/merge でマージします。merge_method は merge・squash・rebase のどれかで、GitHub の文書は「マージできないとき」405 と答えると書いています。自動マージ(GraphQL の enablePullRequestAutoMerge)もマージの方法を受け取ります。リポジトリが認める方法は設定にあり、GET /repos/持ち主/リポジトリ名 が allow_merge_commit・allow_squash_merge・allow_rebase_merge として、allow_auto_merge・delete_branch_on_merge と並べて返します。ブランチの保護やルールセットは、それをさらに絞れます(2026年10月25日に確認)。
HTTP/1.1 405 Method Not Allowed
{"message": "Squash merges are not allowed on this repository."}
GitHub の文と理由
Merge commits are not allowed on this repository.・Squash merges are not allowed on this repository.・Rebase merges are not allowed on this repository.:送った方法が認められていません。2026年の公開の報告に3つともあり、スカッシュの文は 405 でした。- リポジトリの設定は、ブランチが認める物を言わない:2026年の公開の報告は、
allow_merge_commitが true なのにMerge commits are not allowed on this repository.で断られています。マージ先のブランチの保護が直線の履歴を求めていたためで、そのブランチの GitHub のルールセットの入口は空の一覧を返していました。 This branch must not contain merge commits.(2024年の公開の報告では 405 で、「You're not authorized to push to this branch.」が続く):ブランチが直線の履歴を求めています。GitHub の文書は、直線の履歴を強いると、保護されたブランチにはだれもマージコミットを push できなくなると書いています。- ルールセットのマージの方法:文書は、リポジトリで決めたマージの方法がルールセットのマージの方法の規則とぶつかると、マージできないと書いています。たとえばリポジトリがリベースのマージを認めず、規則がそのブランチでリベースだけを認めるなら、マージはできません。2026年の公開の報告は、ブランチのルールセットがスカッシュだけを認めていて、
enablePullRequestAutoMergeからMerge method merge commits are not allowed on this repositoryを受けています。 - トークンから見えない設定:文書は、リポジトリのマージに関わる設定を見るには、contents の読み取りと書き込みの権限が要ると書いています。
- リベースしてマージ:文書は、リベースしてマージを使う前に、コマンドラインでリベースし、衝突を解いて force push しなければならないことがあると書いています(Rebase and merge が使えない)。
直し方
- 別の方法を選ぶ:リポジトリが認め、マージ先のブランチの規則も認める方法にします。直線の履歴のブランチなら、スカッシュかリベースです。
- ブランチの規則を見る:ブランチにかかるルールセットは
GET /repos/持ち主/リポジトリ名/rules/branches/ブランチにあります。classic のブランチの保護のrequired_linear_historyは、その保護の設定にあります。 - 認める方法を変える:リポジトリの管理者が、リポジトリの Settings・General・Pull Requests で方法を、ブランチの保護かルールセットでブランチの規則を決めます。
- 別の理由で断られたなら:GitHub がマージを断った理由(405・409)へ。自動マージならGitHub の自動マージの断りへ。
IntelliJ IDEA では方法はリポジトリの設定だけで決まり、読むのはつないだ時の1回
IntelliJ IDEA に入っている GitHub の機能がマージの方法をどう選ぶか。ソース(2026年10月31日に確認・IntelliJ IDEA:GHPRDetailsActionsComponentFactory.kt・GHPRReviewFlowViewModelImpl.kt・GHPRSecurityServiceImpl.kt・repository.graphql・refUpdateRule.graphql・GHPRMergeabilityStateBuilder.kt・GithubApiRequests.kt)では:
- 出す方法:リポジトリの
mergeCommitAllowed・squashMergeAllowed・rebaseMergeAllowed(上の3つの設定の GraphQL での名前)を、リポジトリにつないだ時に1回読みます。そこで許されていない方法は押せません。マージのボタンには Merge…・Squash and Merge…・Rebase のうち許されている最初の1つが出て、残りの2つはそのボタンの下向きの矢印の中です。ボタンが出るのはプルリクが承認済みと数えられてから(レビュアーなら、自分のレビューがもう求められていなくなってから)。それまでと、作者でもレビュアーでもないときは、3つとも「その他の操作」のメニューの Merge Review… の中だけです。 - 見ないもの:対象のブランチのルールのうち、直線の履歴(linear history)を求めるかは一緒に取ってきますがボタンには使わず、ルールセットは読みません。どちらも方法を押せなくはしません。つないだ後にリポジトリの設定を変えても、つなぎ直すまでボタンには届きません。こうしたときは GitHub が上の 405 で断ることがあります。
- 送るのは上の REST の API で、
merge_methodをmerge・squash・rebaseのどれかにし、最後に読み込んだ head をshaとして送ります。Merge… と Squash and Merge… は先にコミットメッセージを聞き(Squash and Merge… は各コミットの1行目を箇条書きにして入れておく)、Rebase はすぐ送ります。 - GitHub が断ると、画面には何も出ません(「Pull Request is not mergeable」のページの IntelliJ IDEA の節)。理由は、上のリクエストでリポジトリの設定とブランチのルールを読んで確かめます。
IntelliJ IDEA で GitHub のプルリクを見るなら
Lesstep の Pull Request Inbox for GitHub は、JetBrains IDE(2024.1 以降)のプラグインです。リポジトリの設定が認めるマージの方法(マージコミットを作る・1つのコミットにまとめてマージ・リベースしてマージ。トークンから設定が見えないときは3つとも)を出し、「マージ後に削除」の初期値を delete_branch_on_merge から決めます。マージ先のブランチのルール(GET /repos/{owner}/{repo}/rules/branches/{branch})も読み、ルールセットが禁じる方法(プルリクのルールの allowed_merge_methods に無い方法と、直線の履歴を求めるときのマージコミット)は出しません。「これだけ」と言うのは、設定かルールが分かっているときだけです。昔からのブランチの保護は読まないので、それが禁じる方法は出ることがあります。リポジトリがその方法を認めていないと GitHub が答えたときは、GitHub の文を添えてそう言い、マージの画面で別の方法を選ぶよう伝えます(承認やチェックのせいにはしません)。ブランチの規則によるものなど、ほかの断りは GitHub の文を出します。直線の履歴のブランチでは、スカッシュかリベースを選んでください。受信箱・差分・会話は無料、承認・コメント・マージは Pro(月 US$1.50・30日間の無料試用つき)です。画面は日本語です。
GitHub は GitHub, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitHub, Inc.・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:GitHub のマージの断り(405・409) · GitHub のレビューの断り(422) · GitHub の検索の 422「Validation Failed」 · 「Resource not accessible by personal access token」 · 401「Bad credentials」 · 「Resource protected by organization SAML enforcement」 · 「API rate limit exceeded」 · GitHub の差分の 406「too_large」・3,000件 · GitHub の行のコメントの 422「must be part of the diff」 · GitHub のブランチの更新の断り(422) · GitHub のプルリクが作れない(422・403) · GitHub の自動マージの断り · GitHub の下書き・レビュー準備完了・閉じるの断り · GitHub の会話の解決の断り · GitHub のチェックが出ない(check runs の 403) · GitHub のファイルの中身が読めない · GitHub の比較の断り(404・422) · GitHub のコメント・返信の断り(ロック・アーカイブの 403) · GitHub のブランチが見つからない(404・301) · GitHub Enterprise Server につながらない · GitHub のレビューの依頼が出ない · GitHub のプルリクの一覧が足りない · GitHub の 404・名前を変えたリポジトリ(301・307) · GitHub の行のコメントが outdated・差分に無い · GitHub のプルリクの更新・通知が遅い · GitHub の変更の提案が適用できない · GitHub の必須チェックが Expected のまま · GitHub でコードオーナーのレビューが要る · GitHub で未解決の会話がマージを止める · GitHub で署名の無いコミットがマージを止める · GitHub のマージキューでマージするブランチ · GitHub でマージが最後の push の承認を待っている · GitHub でマージがコードスキャンの結果を待っている · GitHub でマージがコード品質の結果を待っている · GitHub でコードのカバレッジの水準がマージを止める · GitHub でライセンスの適合の結果がマージを止める · GitHub でブランチのロックや更新の制限がマージを止める · GitHub でマージの後にブランチが消えない · GitHub でチームの承認(Required reviewers)がマージを止める · GitHub でシークレットスキャンのアラートがマージを止める · GitHub でスタックしたプルリクがマージできない · GitHub で push の規則が push を止める · GitHub でコミットのメタデータの規則がマージを止める · GitHub で強制 push が止められる · GitHub でプルリクをマージしても issue が閉じない · GitHub のプルリクを手元にチェックアウトできない · GitHub のプルリクがマージ先と衝突している · GitHub で変更を依頼された・レビューを取り消す · GitHub で共同作者がコミットに数えられない · GitHub で依存関係のレビューのチェックが失敗する · GitHub で Dependabot がプルリクをリベースしない · GitHub でフォークが同期できない · GitHub でプルリクのベースのブランチを変えられない · GitHub でプルリクを取り消せない · GitHub でプルリクのテンプレートが出ない · GitHub でプルリクにラベルや担当者が付かない · GitHub でプルリクを閉じられない・開き直せない · GitHub でプッシュ保護にプッシュを止められた · GitHub でプルリクのコメントが隠された · GitHub でデプロイが成功するまでプルリクをマージできない · GitHub でチームに頼んだレビューがメンバーに置き換わった · GitHub でプルリクのファイルの Viewed が外れた · GitHub でマージしていないプルリクがマージ済みになった · GitHub で Copilot のレビューが承認に数えられない · GitHub でワークフローが作ったプルリクのチェックが動かない · GitHub でプルリクに Update branch のボタンが出ない · GitHub で Dependabot のプルリクのチェックが失敗する · GitHub でフォークからのプルリクのチェックが失敗する · GitHub でコミットメッセージの [skip ci] でチェックが動かない · GitHub で保存期間を過ぎてチェックが消えた · GitHub の公開リポジトリのコードレビューの制限 · GitHub でリポジトリのプルリクがオフ・制限されている · GitHub でスタックのプルリクごとにチェックが走る · GitHub でスカッシュでマージ済みのコミットが次のプルリクに出る · GitHub のプルリクでファイルの差分が出ない · GitHub でフォークのプルリクのブランチに push できない · GitHub のプルリクのチェックが取り消された · GitHub で Rebase and merge が使えない · GitHub のマージのコミットメッセージが思った形にならない · GitHub のプルリクでファイルの全行が変わったと出る · GitHub の API がタイムアウトした · GitHub のプルリクで画像や文書の差分が見た目で出ない · GitHub のレビューの依頼が断られる(422) · GitHub で Copilot が作ったプルリクのチェックが動かない・承認が数えられない · GitHub の push が GH006・GH013 で断られる · GitHub で承認が足りずマージできない・数に入らない承認 · JetBrains の IDE で GitHub のプルリクを扱う · English