フォークを作成するためのアクセス許可について
リポジトリの設定と Enterprise のポリシーでフォークが許可されている場合は、個人用アカウント、またはリポジトリを作成するアクセス許可がある GitHub の organization にプライベートまたは内部リポジトリをフォークできます。 一般に、任意のパブリック リポジトリを、自分の個人アカウント、またはリポジトリを作成するアクセス許可を自分が持っている Organization に、フォークできます。
個人アカウントに属しているプライベート リポジトリをフォークした場合は、外部コラボレーターもそのフォークにアクセスできます。 Organization に属しているプライベート または内部リポジトリをフォークした場合は、Organization 内のチームはそのフォークにアクセスできますが、外部コラボレーターはアクセスできません。 Organization の所有者である場合、または Organization がリポジトリ管理者に外部コラボレーターの招待を許可している場合は、Organization に属するプライベート リポジトリのフォークに外部コラボレーターを追加できます。 外部コラボレーターがアップストリーム リポジトリにアクセスできる場合は、Organization に属する内部リポジトリのフォークに外部コラボレーターを追加できます。
Organization は、Organization が所有するプライベート リポジトリのフォークを許可または禁止できます。また、Enterprise はポリシーを適用して、メンバーがプライベートまたは内部リポジトリのフォークを作成できる場所を指定できます。 ポリシーは、Enterprise の Organization で使用できるオプションを制御します。 詳しくは、「Organization のフォークポリシーを管理する」と「Enterprise でリポジトリ管理ポリシーを適用する」をご覧ください。
フォークの可視性について
フォークは、コードと可視性の設定を上流のリポジトリと共有する新しいリポジトリです。 パブリック リポジトリのフォークはすべて公開用です。 フォークの表示範囲を変更することはできません。
すべてのリポジトリはリポジトリ ネットワークに属しています。 リポジトリ ネットワークには、上流のリポジトリ、上流のリポジトリの直接フォーク、およびそれらのフォークのすべてのフォークが含まれます。 リポジトリ ネットワーク内のすべてのフォークの可視性設定は同じです。 詳しくは、「リポジトリ間の接続を理解する」を参照してください。
リポジトリを削除するか、リポジトリの可視性設定を変更すると、リポジトリのフォークに影響します。 詳細については、「リポジトリが削除されたり可視性が変更されたりするとフォークはどうなりますか?」を参照してください
フォークを削除しても、そのフォークのコードコントリビューションは引き続きリポジトリ ネットワークからアクセスできます。
フォークのアクセス許可について
プライベート フォークは、上流リポジトリのアクセス許可構造を継承します。 これは、プライベートリポジトリのオーナーがコードに対するコントロールを管理するための役に立ちます。 たとえば、上流リポジトリがプライベートで読み取り/書き込みアクセスをあるTeamに与えているなら、そのチームはプライベートの上流リポジトリのすべてのフォークに読み取り/書き込みアクセスを持つことになります。 (個人のアクセス許可ではなく) チームのアクセス許可のみが、プライベート フォークによって継承されます。
注: 組織の基本アクセス許可を変更しても、プライベート フォークのアクセス許可は自動的に更新されません。 詳細については、「Organization の基本レベルの権限の設定」を参照してください。
パブリック フォークは、上流のリポジトリのアクセス許可構造を継承しません。 パブリック リポジトリを個人用アカウントにフォークして変更を加えた後、pull request を開いて上流リポジトリに変更を提案する場合、上流リポジトリへのプッシュ アクセス許可を持つどのユーザーにも、pull request ブランチに変更をプッシュする (ブランチの削除を含む) アクセス許可を付与することができます。 これにより、リポジトリの保守管理者がマージする前に、ユーザー所有のフォークから pull request ブランチにローカルでコミットしたりテストを実行したりできるようになり、コラボレーションのスピードアップにつながります。 Organization が所有するフォークにプッシュ権限を与えることはできません。 詳しくは、「フォークから作成されたプルリクエストのブランチへの変更の許可」を参照してください。
フォークされたリポジトリのプッシュ ルールセットについて
プッシュ ルールは、リポジトリのフォーク ネットワーク全体に適用され、リポジトリへのすべてのエントリ ポイントが確実に保護されます。 たとえば、プッシュルールセットが有効になっているリポジトリをフォークした場合、フォークされたリポジトリにも同じプッシュルールセットが適用されます。
フォークされたリポジトリの場合、プッシュ ルールのバイパス アクセス許可を持つユーザーは、ルート リポジトリのバイパス アクセス許可を持つユーザーだけです。
詳しくは、「ルールセットについて」を参照してください。
重要なセキュリティに関する考慮事項
フォークを使用する場合、またはフォークを許可するリポジトリまたは Organization の所有者の場合は、次のセキュリティに関する考慮事項に注意することが重要です。
- フォークには、上流のリポジトリとは別の固有のアクセス許可があります。
- フォークされたリポジトリの所有者は、リポジトリのネットワーク内のすべてのフォークに対する読み取りアクセス許可を持っています。
- フォークされたリポジトリの Organization の所有者は、フォークとそのブランチを削除する権限を含め、個人ユーザー名前空間で作成されたフォークに対する管理者アクセス許可を持っています。
- フォークされたリポジトリの Organization の所有者は、Organization 内で作成されたフォークに対する読み取りアクセス許可を持っていますが、フォークまたはそのブランチを削除することはできません。
- 上流のリポジトリから個人のアクセスが削除されても、別の Organization に作成されたフォークは削除されません。
- ネットワーク内の任意のリポジトリへのコミットには、フォークが削除された後でも同じネットワーク内の任意のリポジトリ (上流のリポジトリを含む) からアクセスできます。
Organization 内のフォークについて
同じ Organization 内のフォークは、上流のリポジトリのコラボレーターとチームの設定をコピーします。 リポジトリが Organization によって所有されている場合:
- その Organization が、そのフォークのアクセス許可を制御します。
- ターゲットの Organization またはユーザー名前空間に存在して表示できる、上流のアクセス許可構造のチームには、そのアクセス許可がコピーされます。
- 管理者アクセス許可は、ユーザーが別の Organization にフォークする場合を除き、上流の所有者に残ります。
- そのリポジトリがユーザー名前空間にフォークされた場合、Organization は管理者アクセス許可を保持し、アクセス権を持つチームはアクセス権を維持します。