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