GitHub:ブランチが見つからなかった理由
1本のブランチは GET /repos/持ち主/リポジトリ名/branches/ブランチ で読みます。GitHub の文書は答えを 200・301「Moved permanently」・404「Resource not found」と挙げ、名前にワイルドカードの文字は入れられない(それは GraphQL の API で)と書いています。すべてのブランチは GET /repos/持ち主/リポジトリ名/branches で一覧にし、per_page で最大100を頼まない限り1ページ30本です。protected=true はブランチの保護かルールセットで守られたブランチだけを、protected=false はそれ以外だけを返します(2026年10月25日に確認)。
GET /repos/持ち主/リポジトリ名/branches/feature-x → 404 GET /repos/持ち主/リポジトリ名/branches/master → 301 Location: …/branches/main
GitHub の答えと理由
- 404:その名前のブランチが GitHub にありません。一度も push していない、別の名前で push した(ローカルのブランチは、名前の違う上流のブランチを追うことができます)、プルリクをマージした後などに消された、のどれかです。トークンから見えないリポジトリも 404 になります。
- 別のブランチへの 301:GitHub の名前の変更の文書は、古いブランチの名前を含む URL は名前を変えたブランチへ転送されると書いています。2026年の公開の報告は、転送をたどらずに測り、
masterの無いリポジトリでGET …/branches/masterが 301 で答え、Locationがそのリポジトリの今の既定のブランチ(main・develop・版のブランチなど)を指すのを見ています。無いほかの名前(trunk・develop・dev)は 404 でした。転送をたどる道具は、頼んでいないブランチの 200 を受け取るので、答えのnameを頼んだ名前と比べてください。 - 名前を変えたブランチ:文書は、名前を変えるとブランチの保護と開いているプルリクのマージ先が新しい名前になり、名前を変えたブランチが head の開いているプルリクは閉じられ、古い名前の
git pullは転送されないと書いています。ファイルの raw の URL も転送されません。 - 30本しか出ない:一覧は1ページで止まります。2019年の公開の報告は、それより多いリポジトリから30本だけを受け取り、次のページは
Linkヘッダーにありました。
直し方
- GitHub に何があるかを見る:
git ls-remote --heads originがリモートのブランチを並べ、git branch -vvがローカルのブランチがそれぞれどの上流のブランチを追っているかを出します。 - push する:
git push -u origin ブランチで push し、それを上流にします。 - 名前が変わった後:文書は、ローカルの複製を
git branch -m 古い名前 新しい名前・git fetch origin・git branch -u origin/新しい名前 新しい名前・git remote set-head origin -aで合わせる手順を示しています。 - API で読むなら:
per_page=100でLinkヘッダーの次のページが無くなるまでたどり、転送をたどるときはブランチのnameが頼んだ名前かを確かめます。 - 無いブランチへプルリクを作ろうとしたなら:GitHub のプルリクが作れない(422・403)へ。
IntelliJ IDEA はブランチを手元の clone から選び、プッシュするかも手元で決める
IntelliJ IDEA に入っている GitHub の機能が、新しいプルリクのブランチをどう選び、プッシュするかをどう決めるか。ソース(2026年10月31日に確認・IntelliJ IDEA:GHPRCreateViewModel.kt・GHPRCreateComponentFactory.kt・GHPRRepositoryDataServiceImpl.kt・MergeDirectionComponentFactory.kt・GitPushUtil.kt)では:
- 向き先のブランチ:選べるのは、手元の clone がそのリモートについて持っているリモート追跡ブランチです。GitHub にあっても、まだ fetch していないブランチは出ません。最初は、GitHub のリポジトリの既定のブランチ(GraphQL の
defaultBranchRef)と同じ名前のリモート追跡ブランチが入り、clone に無ければ Select… のままです。 - プッシュ先:手元のブランチのプッシュ先は、リモートの push の refspec が指すブランチか、無ければ上流のブランチです。上流を使うのは、同じリモートにあって名前も同じときだけです。上流の名前が違い(feature が origin/me/feature を追うなど)、refspec も無いとプッシュ先が無く、作る時に New Remote Branch for Pull Request で名前を聞かれます(手元の名前が入った状態)。ブランチの横の警告アイコンのツールチップに、There is no remote branch for … や Local branch is not in sync with remote と出ます。
- プッシュするかは手元で決める:作る時、手元のブランチのコミットが、clone にあるプッシュ先のブランチのコミットと違うときだけ、push のダイアログを開かずにプッシュします。ブランチが GitHub にあるかは聞きません。なので、GitHub で消したブランチでも、clone にリモート追跡ブランチが同じコミットで残っていればプッシュし直さず、プルリクを作る問い合わせは GitHub に無いブランチの名前で送られます。プッシュか問い合わせが失敗すると Failed to create a pull request と出ます。
IntelliJ IDEA で GitHub のプルリクを見るなら
Lesstep の Pull Request Inbox for GitHub は、JetBrains IDE(2024.1 以降)のプラグインです。プルリクを作る前に、そのブランチが GitHub にあるかを確かめ、GitHub が 404 と答えたら「まだ GitHub にありません」と言い、「プッシュ…」で IDE の push のダイアログを開きます。上流が同じリモートにあれば push した名前(git push -u origin feature:me/feature の me/feature)で、そうでなければローカルの名前で探します。マージ先の欄は GitHub にあるブランチ(1ページ100本で、1,000本まで読む)から選べ、それより多いときや読めないときは、どんな名前でも打てます。上の報告の master や、名前を変えたブランチの古い名前のように、GitHub が別のブランチで答えたときは push 済みと数えず、GitHub が回した先のブランチの名前を出して push のダイアログを勧めます。受信箱・差分・会話は無料、承認・コメント・マージは 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 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