GitHub:Rebase and merge が使えない
Rebase and merge は、head のブランチのコミットを1つずつ、マージコミットを作らずにマージ先のブランチへ足します。リポジトリへの書き込みの権限と、リベースでのマージを許しているリポジトリが要ります。GitHub がプルリクを自動では安全にリベースできないときは、手元でリベースし、衝突を解決して、更新したブランチを push します(GitHub の コミットをリベースしてマージする・2026年10月27日に確認)。
使えない理由
- リポジトリが許していない:リベースでのマージは、リポジトリの Settings の Pull Requests にある Allow rebase merging で許します。直線の履歴を求める保護されたブランチには、スカッシュでのマージかリベースでのマージ(または両方)を許しておく必要があります(GitHub の プルリクのコミットのリベースを設定する)。
- GitHub が安全にリベースできない:GitHub で Rebase and merge を使う前に、コマンドラインでリベースし、衝突を解決して、head のブランチへ force push しなければならないことがあります(GitHub の GitHub のマージの方法について)。API では、プルリクに
rebaseable(true・false・null)があります(GitHub の プルリクの REST API)。 - ブランチのルールがほかの方法を求めている:リポジトリで設定したマージの方法がルールセットのマージの方法のルールとぶつかると、マージできません(マージの方法が断られた理由)。
Rebase and merge が変えること
- 新しいコミット:コミッターの情報をいつも書き換え、新しいコミットの SHA を作ります。
git rebaseは、祖先のコミットの上へのリベースならコミッターの情報を変えません。マージの後、プルリクのmerge_commit_shaは、マージ先のブランチが進んだ先のコミットです。 - 空のコミット:最初から空だったコミット(
git commit --allow-emptyで作った物など)を落とします。git rebaseは既定で残します。 - 署名:コミットは署名の検証なしでマージ先のブランチに足されます。GitHub は本人に代わって署名できないからです(署名の無いコミットがマージを止めている)。
どうするか
- 手元でリベースする:head のブランチをマージ先のブランチの上へリベースし、衝突を解決して force push します。ほかの人がそのブランチの上に積んだ作業を上書きしないよう、force push は気をつけて行います。ブランチのルールが force push を止めることもあります(強制 push が止められる)。
- ほかの方法で:ブランチのルールが許すなら、スカッシュでのマージかマージコミットで。
- 許してもらう:リポジトリの設定を変えられる人が Allow rebase merging を選びます。
IntelliJ IDEA の Rebase は、マージの状態でなく GitHub の canBeRebased で決まる
IntelliJ IDEA に入っている GitHub の機能が、Rebase のボタンをいつ押せるようにするか。ソース(2026年10月31日に確認・IntelliJ IDEA:GHPRReviewFlowViewModelImpl.kt・GHPRRebaseMergeAction.kt・GHPRMergeabilityStateBuilder.kt・pullRequestMergeability.graphql・GHPRSecurityServiceImpl.kt・GithubSharedProjectSettings.kt・GHPRDetailsServiceImpl.kt)では:
- 押せるとき:次が全部そろったときだけです。リポジトリが rebase のマージを許している(IDE がつないだ時に読んだ物・マージの方法が断られた理由)。プルリクの GitHub の GraphQL の
canBeRebased(「Whether or not the pull request is rebaseable」=rebase できるかどうか)が真。アカウントが Write 以上の権限。向き先のブランチにルールがあれば、GitHub がそこへ push できると返している。プロジェクトで共有する設定pullRequestMergeForbidden(.idea/vcs.xmlに入る)が入っていない。そのプルリクのほかの操作が動いていない。 - マージの状態は見ない:Merge… と Squash and Merge… は GitHub のマージの状態がマージを許していることも要りますが、Rebase は代わりに
canBeRebasedを見ます。そのため、その2つが押せないときでも Rebase は押せることがあり、そのときは届いた時に GitHub が決めます。 - 押すと、確認の画面なしに、すぐ rebase のマージを送ります。GitHub が断ると、ソースはエラーを IDE のログに書くだけです。
IntelliJ IDEA で GitHub のプルリクを見るなら
Lesstep の Pull Request Inbox for GitHub は、JetBrains IDE(2024.1 以降)のプラグインです。プルリクのレビュー・チェック・会話を差分の隣に並べ、対象のブランチが許す方法でマージします。マージの画面では、リポジトリの設定とブランチのルールが許すときに Rebase and merge を選べ、GitHub が自動でリベースできない(rebaseable が false)ときはそう出し、断られたら 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 のマージの方法の断り(405) · 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 のマージのコミットメッセージが思った形にならない · GitHub のプルリクでファイルの全行が変わったと出る · GitHub の API がタイムアウトした · GitHub のプルリクで画像や文書の差分が見た目で出ない · GitHub のレビューの依頼が断られる(422) · GitHub で Copilot が作ったプルリクのチェックが動かない・承認が数えられない · GitHub の push が GH006・GH013 で断られる · GitHub で承認が足りずマージできない・数に入らない承認 · JetBrains の IDE で GitHub のプルリクを扱う · English