Skip to main content

フォークのアクセス許可と可視性について

フォークのアクセス許可と可視性は、アップストリーム リポジトリがパブリックかプライベートか、 組織が所有しているかどうか、および企業のポリシーによって異なります。

フォークを作成するためのアクセス許可について

リポジトリの設定と Enterprise のポリシーでフォークが許可されている場合は、個人用アカウント、またはリポジトリを作成するアクセス許可がある GitHub の organization にプライベートまたは内部リポジトリをフォークできます。

一般に、任意のパブリック リポジトリを、自分の個人アカウント、またはリポジトリを作成するアクセス許可を自分が持っている Organization に、フォークできます。

  • 個人アカウントに属しているプライベート リポジトリをフォークした場合は、外部コラボレーターもそのフォークにアクセスできます。

  • 組織に属するプライベート または内部 repository をフォークした場合、組織内のチームはフォークにアクセスできますが、外部コラボレーターはアクセスできません。

  • 組織の所有者である場合、または組織がリポジトリ管理者に外部コラボレーターの招待を許可している場合は、組織に属するプライベート リポジトリのフォークに外部コラボレーターを追加できます。

  • 外部コラボレーターがアップストリーム リポジトリにアクセスできる場合は、組織に属する内部リポジトリのフォークに外部コラボレーターを追加できます。

組織は、組織が所有するプライベート リポジトリのフォークを許可または禁止できます。また企業は、メンバーがプライベート リポジトリまたは内部リポジトリのフォークを作成できる場所を指定するポリシーを適用できます。 ポリシーは、企業の組織で使用できるオプションを制御します。 詳細については、 Organization のフォークポリシーを管理する および Enterprise でリポジトリ管理ポリシーを適用する

フォークの可視性について

フォークは、コードと可視性の設定を上流のリポジトリと共有する新しいリポジトリです。 パブリック リポジトリのフォークはすべて公開用です。 フォークの表示範囲を変更することはできません。

すべてのリポジトリはリポジトリ ネットワークに属しています。 リポジトリ ネットワークには、上流のリポジトリ、上流のリポジトリから直接派生したフォーク、およびそれらのフォークのすべてのフォークが含まれます。 リポジトリ ネットワーク内のすべてのフォークの可視性設定は同じです。 詳しくは、「リポジトリ間の接続を理解する」をご覧ください。

リポジトリを削除するか、リポジトリの可視性設定を変更すると、リポジトリのフォークに影響します。 詳細については、「リポジトリが削除されたり可視性が変更されたりするとフォークはどうなりますか?」を参照してください

フォークを削除しても、そのフォークのコードコントリビューションは引き続きリポジトリ ネットワークからアクセスできます。

フォークのアクセス許可について

プライベート フォークは、上流リポジトリのアクセス許可構造を継承します。 これは、プライベートリポジトリのオーナーがコードに対するコントロールを管理するための役に立ちます。 たとえば、上流リポジトリがプライベートで読み取り/書き込みアクセスをあるTeamに与えているなら、そのチームはプライベートの上流リポジトリのすべてのフォークに読み取り/書き込みアクセスを持つことになります。 (個人のアクセス許可ではなく) チームのアクセス許可のみが、プライベート フォークによって継承されます。

メモ

組織の基本アクセス許可を変更しても、プライベート フォークのアクセス許可は自動的に更新されません。詳細については、「Organization の基本レベルの権限の設定」を参照してください。

パブリック フォークは、上流のリポジトリのアクセス許可構造を継承しません。

パブリック リポジトリを個人用アカウントにフォークするとき、リポジトリ メンテナに pull request ブランチへのプッシュを許可することができます。 これには、コミットを行ったりブランチを削除したりするためのアクセス許可の付与が含まれます。

このようにしてメンテナが次のことをできるようにすると、コラボレーションがいっそう速やかになります。

  • 自分のブランチに直接コミットを行う
  • マージの前にローカル環境でテストを実行する Organization が所有するフォークへのプッシュ アクセス許可を付与することはできません。

詳しくは、「フォークから作成されたブランチへのプルリクエストの変更を許可する」をご覧ください。

フォークされたリポジトリにおけるプッシュルールセットについて

プッシュ ルールは、リポジトリのフォーク ネットワーク全体に適用され、リポジトリへのすべてのエントリ ポイントが確実に保護されます。 たとえば、プッシュルールセットが有効になっているリポジトリをフォークした場合、フォークされたリポジトリにも同じプッシュルールセットが適用されます。

フォークされたリポジトリの場合、プッシュ ルールのバイパス アクセス許可を持つユーザーは、ルート リポジトリのバイパス アクセス許可を持つユーザーだけです。

詳しくは、「ルールセットについて」をご覧ください。

重要なセキュリティに関する考慮事項

フォークを使用する場合、またはフォークを許可するリポジトリまたは Organization の所有者の場合は、次のセキュリティに関する考慮事項に注意することが重要です。

  • フォークには、上流のリポジトリとは別の固有のアクセス許可があります。
  • フォークされたリポジトリの所有者は、リポジトリのネットワーク内のすべてのフォークに対する読み取りアクセス許可を持っています。
  • フォークされたリポジトリの Organization の所有者は、フォークとそのブランチを削除する権限を含め、個人ユーザー名前空間で作成されたフォークに対する管理者アクセス許可を持っています。
  • フォークされたリポジトリの Organization の所有者は、Organization 内で作成されたフォークに対する読み取りアクセス許可を持っていますが、フォークまたはそのブランチを削除することはできません。
  • 上流のリポジトリから個人のアクセスが削除されても、別の Organization に作成されたフォークは削除されません。
  • ネットワーク内の任意のリポジトリへのコミットには、フォークが削除された後でも同じネットワーク内の任意のリポジトリ (上流のリポジトリを含む) からアクセスできます。

Organization 内のフォークについて

同じ組織内のフォークは、元のリポジトリのコラボレーターとチームの設定をコピーします。 リポジトリが Organization によって所有されている場合:

  • その組織がそのフォークのアクセス許可を管理しています。
  • ターゲットの Organization またはユーザー名前空間に存在して表示できる、上流のアクセス許可構造のチームには、そのアクセス許可がコピーされます。
  • 管理者アクセス許可は、ユーザーが別の Organization にフォークする場合を除き、上流の所有者に残ります。
  • そのリポジトリがユーザー名前空間にフォークされた場合、Organization は管理者アクセス許可を保持し、アクセス権を持つチームはアクセス権を維持します。

Enterprise 内のフォークについて

内部リポジトリは単一レベルのフォークのみをサポートしており、内部リポジトリのプライベート フォークをフォークすることはできません。 これは、Enterprise 全体でアクセスできる内部リポジトリへのアクセスと管理を簡略化することを目的としています。 これは、入れ子になったフォークを許可するパブリックおよびプライベート リポジトリの動作とは異なります。