GitHub:push の規則が push を止める
push のルールセットは、非公開か内部のリポジトリと、そのフォークの網全体への push を、ファイルのパス・ファイルのパスの長さ・拡張子・ファイルの大きさで止めます。push の規則はブランチを対象に選ばず、リポジトリへのすべての push に効きます。規則に触れるコミットは push できないので GitHub に届かず、コミットを直すまで、それを含むプルリクは作れません(GitHub の説明「ルールセットについて」・2026年10月26日に確認)。
"target": "push",
"rules": [ { "type": "max_file_size", "parameters": { "max_file_size": 10 } },
{ "type": "file_path_restriction",
"parameters": { "restricted_file_paths": ["test/demo/**/*"] } } ]
4つの push の規則
- Restrict file paths(ファイルのパスの制限):挙げたパスへの変更を含むコミットは push できません。パスは
fnmatchの書き方で、test/demo/**/*はtest/demo/の中のすべてを、test/docs/pushrules.mdはそのファイルだけを止めます。最大200件・1件200文字まで(GitHub の説明「ルールセットで使える規則」)。 - Restrict file path length(パスの長さの制限):決めた文字数より長いファイルのパスを含むコミットは push できません。
- Restrict file extensions(拡張子の制限):挙げた拡張子のファイルを含むコミットは push できません。最大200件・1件200文字まで。
- Restrict file size(ファイルの大きさの制限):決めた大きさを超えるファイルを含むコミットは push できません。REST API では上限をメガバイトで1〜100の間で決め、Git Large File Storage(Git LFS)には効きません(GitHub の説明「ルールの REST API」)。
効く範囲
- フォークの網全体:push のルールセットがあるリポジトリのフォークにも同じ push の規則が効き、フォークで規則を迂回できるのは、元のリポジトリで迂回できる人だけです。
- 一部の REST API にも:push のルールセットは「Create a blob」「Create a tree」「Create or update file contents」にも効きます(GitHub の説明「ルールのトラブルシューティング」)。
- 大きな push:push のルールセットがあると、1回の push で更新できる参照は1,000までで、超える push は断られます。
- どのリポジトリか:push のルールセットは、非公開と内部のリポジトリに作れます。
直す所
- コミットを直す:規則は push されるコミットを見ます(「挙げたパスへの変更を含むコミット」など)。そのため、まだ GitHub に無いコミットを、どれも規則に触れなくなるまで直す必要があります。GitHub のトラブルシューティングは、規則によっては push の前に手元でコミットの履歴を直す必要があり、その方法の例に対話的なリベースを挙げています。
- 許可する例外を見る:「Restrict file paths」と「Restrict file size」には、
fnmatchの書き方で許可する例外(例:**/gradle/wrapper/*.jar)を挙げられます。push できるままにすべきファイルなら、リポジトリ・組織・エンタープライズの管理者が例外を足せます。例外を持てるのはこの2つの規則だけで、止めている種類のファイルを1つだけ通すには、GitHub は**/*.jarのようなパターンで「Restrict file paths」を使うよう案内しています。 - 規則を探す:リポジトリを読める人なら誰でも、有効なルールセットを見られます。リポジトリの設定の Rules → Insights には、ルールセットで確かめた操作と、失敗した操作、失敗した操作ではどの規則が失敗したかが出ます(GitHub の説明「リポジトリのルールセットの管理」)。同じ内容は、ルールスイートの REST API でも読めます。
- プロジェクトに要る大きなファイル:ファイルの大きさの制限は Git LFS には効きません。
IntelliJ IDEA で GitHub のプルリクを見るなら
Lesstep の Pull Request Inbox for GitHub は、JetBrains IDE(2024.1 以降)のプラグインです。プルリクのレビュー・チェック・会話を差分の隣に出し、対象のブランチが許す方法でマージします。プラグインは自分ではコミットを push しません。まだ GitHub に無いブランチからプルリクを作ろうとするとそう伝え、IDE の push の画面を開けるようにします。これらの規則が断る 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 のブランチが見つからない(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 でコミットのメタデータの規則がマージを止める · 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