GitHub:変更の提案(suggestion)が適用できない理由
レビューする人は、プルリクの行へのコメントに suggestion のブロックを入れ、その行を「こう直したい」という形で書けます(GitHub の説明「プルリクにコメントする」)。GitHub の説明「フィードバックを取り込む」によると、提案を適用できるのはリポジトリへの書き込み権限がある人です。フォークから出したプルリクで作者がメンテナーの編集を許しているときは、元のリポジトリへの書き込み権限があれば適用できます。提案を1つ適用しても、まとめて適用しても、プルリクの比較ブランチにコミットが1つできます。提案した人はそれぞれ共著者になり、適用した人は共著者かつコミッターになります(2026年10月26日に確認)。
```suggestion if (count == 0) return 0 ```
GitHub の文と、その意味
GitHub のプルリクのページには、適用しない提案に出す次の文があります(公開のプルリクのページの HTML から 2026年10月26日に読み取り)。
- 「Outdated suggestions cannot be applied.」(古くなった提案は適用できません) 後のコミットがコメントした行を変えたので、提案はもう無いコードに対して書かれています(行のコメントが outdated になる理由)。今の行に提案し直してもらうか、自分で直します。
- 「Suggestions cannot be applied from pending reviews.」(保留中のレビューからは適用できません) 提案が、書いた人がまだ送信していないレビューの中にあります。レビューが送信されれば適用できます。
- 「Applying suggestions on deleted lines is not supported.」(消された行への提案の適用には対応していません) コメントが消された行、つまり差分の左側(API では
sideがLEFT)に付いています。 - 「Suggestions cannot be applied while viewing a subset of changes.」(変更の一部を表示している間は適用できません) Files changed タブが一部のコミットだけを表示しています。すべての変更を表示してから適用します。
- 「Only one suggestion per line can be applied in a batch.」(まとめて適用できるのは1行に1つの提案だけです) まとめた中の2つの提案が同じ行に掛かっています。片方をまとめから外します。
- 「Suggestions cannot be applied while the pull request is closed.」(プルリクが閉じている間は適用できません)と「Suggestions cannot be applied while the pull request is queued to merge.」(マージキューに入っている間は適用できません) 開き直すか、キューから出るまで待ちます。
- 「This suggestion is invalid because no changes were made to the code.」(コードが変わっていないので、この提案は無効です)と「You must change the existing code in this line in order to create a valid suggestion.」(有効な提案にするには、この行の今のコードを変える必要があります) ブロックの中身が今のコードと同じで、コミットする物がありません。
- 「This suggestion has been applied or marked resolved.」(この提案は適用済みか、解決済みです) もうコミットに入っているか、会話が解決されています。
- 「Suggestion cannot be applied right now. Please check back later.」(今は適用できません。後でもう一度確かめてください) 時間をおいてやり直します。
- 「Commit suggestion」のボタン自体が無い:リポジトリへの書き込み権限がありません。フォークからのプルリクなら、作者がメンテナーの編集を許していません(GitHub の説明「フォークから作ったブランチへの変更を許す」)。
提案を適用する API は無い
- 調べた物:GitHub の REST API の記述(api.github.com・OpenAPI 1.1.4)と、公開の GraphQL のスキーマには、プルリクの提案を適用する操作がありません(2026年10月26日に検索)。API から見た提案はただの文で、コメントの
bodyに suggestion のブロックが書いたまま入っています。 - 別の物:REST の
/repos/OWNER/REPO/issues/NUMBER/suggestions以下と、GraphQL のapplyPendingIssueSuggestionsは、エージェントが issue の種類・ラベル・項目・担当者・閉じる状態に出した変更の案を扱う物です。GitHub の記述では issue だけが対象で、プルリクには使えません。 - ボタンを使わずに取り込む:プルリクの head ブランチに、その変更のコミットを作ります(手元にチェックアウトして直すか、
PUT /repos/OWNER/REPO/contents/PATHにブランチ名を付けて)。「Commit suggestion」なら提案した人が共著者になるので、Co-authored-byの行で名前を残し、会話を解決します。
IntelliJ IDEA では提案を GitHub でなく手元のリポジトリで当てる
IntelliJ IDEA に入っている GitHub の機能が、プルリクのタイムラインで提案をどう当てるか。ソース(2026年10月31日に確認・IntelliJ IDEA:GHPRReviewSuggestedChangeComponentFactory.kt・GHPRReviewCommentBodyViewModel.kt・GHSuggestedChangeApplier.kt・intellij.vcs.github.xml・GithubBundle.properties)では:
- ボタン:suggestion のブロックがあるコメントには Suggested change の枠が出て、Apply Locally(手元で当てる)と、もう1つの選択肢の Commit… があります(既定で有効)。
- 押せないとき:手元のリポジトリでプルリクのブランチをチェックアウトしていないとき(「Unable to apply the suggested change from a pull request in a different branch」)、スレッドが解決済みのとき(「This suggestion has been resolved」)、GitHub がスレッドを行番号なしで返したとき(古くなったスレッドなど・「Outdated suggestions cannot be applied」で、GitHub と同じ文)です。
- GitHub に当ててもらうのではありません。Apply Locally は作業ツリーのファイルに当てます。Commit… はコミットのメッセージを聞き(空なら受け付けません)、当てたファイルをインデックスに書いて、そのファイルだけを手元でコミットします。メッセージは書いたとおりで、共同作成者は足しません。push はしないので、プルリクに入るのは自分で push した後です。
- その後、当てられたとき(Commit… ならコミットできたとき)だけ、GitHub でスレッドを解決します。それも GitHub があなたに
viewerCanResolveを真と返しているときだけです。コミットに失敗すると、IDE のログに「エラー」として書きます。
IntelliJ IDEA で GitHub のプルリクを見るなら
Lesstep の Pull Request Inbox for GitHub は、JetBrains IDE(2024.1 以降)のプラグインです。行へのコメントは「コメント」タブにファイルと行を添えて出し、前のコミットに付いてその後で行が変わったスレッドはそう書きます。変更の提案には、どの行を置き換えるか(ブロックが空なら、その行を消すこと)と、GitHub の「Commit suggestion」で取り込むことを添えます。消された行への提案なら、GitHub がそこでは適用しないことを添えます。GitHub の API に手段が無いので、プラグインは提案の適用はしません。「ブラウザで開く」で「Commit suggestion」のある 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 の必須チェックが 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