Skip to main content

リポジトリのルールセットの作成

リポジトリにルールセットを追加して、ユーザーが特定のブランチやタグを操作する方法を制御できます。

この機能を使用できるユーザー

リポジトリのルールセットは、そのリポジトリの読み取りアクセス権を持つすべてのユーザーが表示できます。 リポジトリの管理者アクセス権を持つユーザー、または "リポジトリ ルールの編集" アクセス許可を持つカスタム ロールは、リポジトリのルールセットを作成、編集、削除したり、

ルールセットは、GitHub Free と GitHub Free の Organization のパブリック リポジトリ、GitHub Pro、GitHub Team、GitHub Enterprise Cloud のパブリックとプライベートのリポジトリで利用できます。 詳しくは、「GitHub のプラン」をご覧ください。

はじめに

ルールセットを作成して、ユーザーがリポジトリ内で選んだブランチとタグを操作する方法を制御できます。 ルールセットを作成するときに、特定のユーザーがルールセットの中のルールをバイパスすることを許可できます。 これは、特定のアクセス許可を持つユーザー、特定のチーム、または GitHub Apps です。 このルールセットについて詳しくは、「ルールセットについて」をご覧ください。

ルールセットを作成するには、次の手順を完了します。

分岐またはタグルールセットの作成

  1. GitHub.com で、リポジトリのメイン ページへ移動します。

  2. リポジトリ名の下にある [設定] をクリックします。 [設定] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。

    タブを示すリポジトリ ヘッダーのスクリーンショット。 [設定] タブが濃いオレンジ色の枠線で強調表示されています。

  3. 左側のサイド バーの [コードと自動化] の下で、 [ルール] をクリックし、 [ルールセット] をクリックします。

    リポジトリの [設定] ページのサイド バーのスクリーンショット。 [ルール] サブメニューが展開され、[ルールセット] オプションの枠線がオレンジ色で表示されています。

  4. ブランチを対象とするルールセット、またはタグを対象とするルールセットを作成できます。

    • ブランチを対象とするルールセットを作成するには、 [新しいブランチ ルールセット] をクリックします。

    • タグを対象とするルールセットを作成するには、[] を選び、 [新しいタグ ルールセット] をクリックします。

      [ルールセット] ページのスクリーンショット。 [新しいブランチ ルールセット] ボタンの横にドロップダウン メニューが展開され、[新しいタグ ルールセット] というラベルが付いたオプションがオレンジ色の枠線で囲まれています。

  5. [全般] セクションで、ルールセットの名前を入力し、 [無効] を選択して、次の適用ステータスのいずれかをクリックします。

    • アクティブ: ルールセットは作成時に適用されます。
    • 無効: ルール セットは、 に適用されません。

ルールセットに対するバイパス アクセス許可の付与

特定のロール、チーム、またはアプリにルール セットのアクセス許可をバイパスさせることができます。 バイパス アクセスの対象となるのは次のとおりです。

  • リポジトリ管理者または組織の所有者
  • 保守ロール、書き込みロール、または書き込みロールに基づくカスタム リポジトリ ロール
  • Teams
  • GitHub Apps
  1. ルールセットのバイパスのアクセス許可を付与するには、[バイパス リスト] セクションで [バイパスの追加] をクリックします。

  2. 表示される [バイパスの追加] モーダル ダイアログで、バイパスアクセス許可を付与するロール、チーム、またはアプリを検索し、[提案] セクションからロール、チーム、またはアプリを選択し、[選択項目の追加] をクリックします。

  3. 必要に応じて、リポジトリに直接プッシュすることを許可せずにアクターにバイパスを許可するには、[常時] を選択し、[pull request のみ] をクリックします。

    選択したアクターは、リポジトリに変更を加えるために pull request を開く必要があり、これにより、変更を含む明確なデジタル 証跡が作成されます。 アクターは、ブランチ保護をバイパスし、その pull request をマージすることを選択できます。

ターゲットにするブランチまたはタグの選択

ブランチまたはタグをターゲットにするには、[ターゲット ブランチ] または [ターゲット タグ] セクションで、[ターゲットの追加] を選び、ブランチまたはタグを含めるまたは除外する方法を選びます。 fnmatch 構文を使って、パターンに基づいてブランチまたはタグを含めたり除外したりできます。 詳しくは、fnmatch 構文の使用に関するページを参照してください。

複数のターゲット条件を同じルールセットに追加できます。 たとえば、既定のブランチを含め、*feature* のパターンに一致するブランチを含めてから、not-a-feature のパターンに一致する特定のブランチを除外することができます。

ブランチまたはタグの保護の選択

[ブランチ保護] または [タグ保護] セクションで、ルールセットに含めるルールを選びます。 ルールを選ぶと、そのルールに追加設定を入力できる場合があります。 このルールについて詳しくは、「ルールセットで使用できるルール」をご覧ください。

注: [その他の設定] セクションで [マージ前に状態チェックを必須にする] をオンにする場合:

  • 必須にする各状態チェックの名前を入力できます。 要件としての状態チェックの追加を完了するには、 をクリックする必要があります。
  • [マージする前にブランチを最新にする必要がある] をオンにする場合は、保護を有効にするためのチェックを定義する必要があります。

ルールセットの作成を完了するには、[作成] をクリックします。 ルールセットの適用ステータスが "アクティブ" に設定されている場合、ルールセットはすぐに有効になります。

fnmatch 構文の使用

fnmatch 構文を使うと、ルールセットを作成するときに、ブランチとタグの名前をターゲットにするパターンを定義できます。

* ワイルドカードを使って、任意の文字列に一致させることができます。 GitHub では File::FNM_PATHNAME フラグを File.fnmatch 構文で使うため、* のワイルドカードがディレクトリの区切り記号 (/) と照合されません。 たとえば、qa/* は、qa/ で始まり、1 つのスラッシュを含むすべてのブランチと照合されますが、qa/foo/bar とは照合されません。 qa の後には、qa/**/* を使用して任意の数のスラッシュを含めることができます。これは、たとえば qa/foo/bar/foobar/hello-world と一致します。 qa**/**/* を使い qa の文字列を拡張して、より包括的にすることもできます。

構文のオプションについて詳しくは、fnmatch のドキュメントを参照してください。

注: GitHub は fnmatch 構文で File::FNM_PATHNAME はサポートされていますが、File::FNM_EXTGLOB はサポートされていません。