GitHub:プルリクに Update branch のボタンが出ない
リポジトリでプルリクのブランチの更新をいつも勧める設定がオンなら、書き込みの権限がある人は、プルリクの head のブランチがマージ先に追いついていないとき、いつでもプルリクのページから更新できます。オフなら、更新できるのは、マージ先のブランチがマージの前に最新であることを求めていて、ブランチが最新でないときだけです(GitHub の説明「プルリクのブランチの更新の勧めを管理する」・2026年10月27日に確認)。
Always suggest updating pull request branches on: shown whenever behind
setting off shown only when the rules require up to date
merge conflicts resolve them first
protected head branch the button may not work
PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch merge
updatePullRequestBranch(updateMethod: REBASE) rebase
出ない理由
- 設定がオフ:Always suggest updating pull request branches が無ければ、ボタンはマージ先が最新のブランチを求めるときだけ出ます。Strict(Require branches to be up to date before merging にチェック)ならマージの前にブランチが最新である必要があり、Loose なら要りません(GitHub の説明「保護されたブランチについて」)。
- 競合がある:プルリクのページから更新できるのは、マージの競合が無く、ブランチがマージ先より遅れているときです。先に競合を解きます(GitHub の説明「プルリクをマージ先に合わせておく」)。
- head のブランチが保護されている:プルリクの head のブランチが保護されたブランチだと、Update branch を使えないことがあります。
- 取り込む物が無い:ブランチがマージ先より遅れていません。
直す所
- 勧めをオンにする:リポジトリの設定の Pull Requests で、Always suggest updating pull request branches を選びます。
- マージかリベースを選ぶ:マージの欄の Update branch は、マージ先を head のブランチにマージします。その横のメニューの Update with rebase から Rebase branch を選ぶと、自分の変更を最新のマージ先の上にリベースし、マージのコミットは作りません。
- REST API で:
PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branchは、マージ先の HEAD をプルリクのブランチにマージします。expected_head_shaが head と合わないと 422 です(GitHub の説明「Update a pull request branch」・ブランチの更新を断られた理由)。 - GraphQL で:
updatePullRequestBranchはマージかリベースで更新し、updateMethodはMERGEかREBASE、省くとMERGEです(GitHub の説明「updatePullRequestBranch」と「PullRequestBranchUpdateMethod」)。 - マージキューに任せる:マージキューは、ブランチの最新を求めるのと同じ利点があり、プルリクの作者にブランチの更新とステータスチェックの完了待ちを求めません(GitHub の説明「保護されたブランチについて」・マージキュー)。
IntelliJ IDEA に Update branch は無く、ブランチが遅れていることを示す行も無い
IntelliJ IDEA に入っている GitHub の機能が、ブランチがマージ先より遅れているプルリクをどう扱うか。ソース(2026年10月31日に確認・IntelliJ IDEA:GraphQL のファイル・GithubApiRequests.kt・GHPullRequestMergeStateStatus.kt・GHPRMergeabilityStateBuilder.kt・GHPRMergeabilityState.kt・CodeReviewDetailsStatusComponentFactory.kt)では:
- Update branch は無い:GraphQL のファイルに
updatePullRequestBranchは無く、REST の問い合わせもupdate-branchを呼びません。そのため IDE から GitHub 上のプルリクのブランチを更新することはできません。 - 遅れは出ない:GitHub の
mergeStateStatusがBEHINDだと、Merge… と Squash and Merge… は Admin 以外は押せなくなります(自動マージが断られた理由)。ただし IDE が状態の欄に渡す物にはそれを表す所が無いので、ブランチが古いと出る行はありません。 - Resolve(IDE で行うマージ先のマージか rebase・プルリクがマージ先と衝突している)は、GitHub が衝突を返したときだけ出ます。遅れているだけのブランチは、git で更新して push するか、GitHub の Update branch を使います。
IntelliJ IDEA で GitHub のプルリクを見るなら
Lesstep の Pull Request Inbox for GitHub は、JetBrains IDE(2024.1 以降)のプラグインです。プルリクのレビュー・チェック・会話を差分の隣に出し、対象のブランチが許す方法でマージします。プルリクとマージ先を自分で比べるので、マージ先にプルリクがまだ持っていないコミットがあり、両者が衝突していなければ、リポジトリが勧める設定かどうかにかかわらず「ブランチを更新」を出します。ルールが最新のブランチを求めているときは、マージのチェックに「ルールでその取り込みが必要です」と出ます。更新は REST API でのマージで、リベースはしません。Dependabot が開いたプルリクでは、代わりに @dependabot rebase とコメントするよう出します。受信箱・差分・会話は無料、承認・コメント・解決・マージ・ブランチの更新は 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 で 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