必須ステータスチェックについて
必須ステータスチェックにより、コラボレータが保護されたブランチに変更を加える前に、すべての必須 CI テストにパスしていることが保証されます。
保護されたブランチは、GitHub Free のパブリックリポジトリ、GitHub Pro のパブリックおよびプライベートリポジトリ、GitHub Team、GitHub Enterprise Cloud、GitHub Enterprise Server で利用できます。
リポジトリでブランチの保護を強制した場合、必須ステータスチェックをセットアップできます。 詳細は「保護されたブランチを設定する」および「必須ステータスチェックを有効にする」を参照してください。必須 ステータスチェックは、Check または Status にすることができます。 詳しい情報についてはステータスチェックについてを参照してください。
必須ステータスチェックを有効化すると、保護されたブランチへのブランチのマージは、すべての必須ステータスチェックにパスするまでできません。 コミットは、すべての必須のステータスチェックをパスした後に、他のブランチへプッシュしてからマージするか、保護されたブランチへ直接プッシュしなければなりません。
注釈: リポジトリへの書き込み権限があるユーザまたはインテグレーションなら誰でも、リポジトリのステータスチェックを任意のステータスに設定できます。 GitHub Enterprise は、チェックの作者が、特定の名前でチェックを作成したり、既存のステータスを変更したりする権限を持っているかを確認しません。 プルリクエストをマージする前に、マージボックスに挙げられている各ステータスの作者が、意図するものであるかを確認する必要があります。
同じ名前の Check と Status を持っており、その名前を必須ステータスチェックとして選択した場合、Check と Status はどちらも必須になります。 詳しい情報についてはGitHub 開発者ドキュメンテーション中のチェックを参照してください。
必須ステータスチェックをセットアップした場合、ブランチはマージする前にベースブランチに対して最新になっていなければなりません。 これによって、ブランチがベースブランチからの最新のコードでテストされたことが保証されます。 ブランチが古い場合、ベースブランチをブランチにマージする必要があります。
メモ: Git rebase を用いてブランチをベースブランチに対して最新にすることもできます。
必須ステータスチェックにすべてパスするまでは、ローカルでの変更を保護されたブランチにプッシュすることはできません。 その代わりに、以下のようなエラーメッセージが返されます:
remote: error: GH006: Protected branch update failed for refs/heads/master.
remote: error: Required status check "ci-build" is failing
メモ: 最新で必須のステータスチェックをパスしたプルリクエストは、ローカルでマージしてから保護されたブランチにプッシュできます。 これはマージコミット自体でステータスチェックを実行せずに行えます。
リポジトリの管理者は、必須のステータスチェックが失敗したりペンディングになっていたりしても、保護されたブランチをマージできます。 管理者をステータスチェック必須の対象とすることができます。
管理者はまた、ブランチがベースブランチに対して古くなっていたとしても保護されたブランチをマージできます。
マージに先立ってブランチがベースブランチに対して最新になっているようにしたいかどうかによって、ステータスチェックを緩めたり厳密にしたりセットアップできます。