# フォーク

個別の設定とアクセス許可を使用して、元のリポジトリに接続された個別のリポジトリを作成することで、フォークが独立したコラボレーションを可能にする方法について説明します。

フォークは、アップストリーム リポジトリと呼ばれる別のリポジトリのコピーとして開始されるリポジトリです。 フォークには独自の設定とアクセス許可がありますが、アップストリーム リポジトリへの接続は維持されます。

GitHubでフォークされたリポジトリを表示すると、アップストリーム リポジトリはフォークの名前の下に示されます。

## フォークをブランチと区別する特徴

ブランチは、1 つのリポジトリの一部です。 フォークは、独自の設定とコラボレーション スペースを持つ独立したリポジトリです。

各フォークはそれぞれ独自のものを持つことができます:

* 支店
* メンバーおよびディスカッション
* Issue およびプルリクエスト
* アクションとプロジェクト
* タグ、ラベル、Wiki

## どのリポジトリをフォークできますか？

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

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

リポジトリ、組織、およびエンタープライズ ポリシーでは、リポジトリをフォークできるかどうか、およびフォークを作成できる場所を制限できます。 プライベート および内部 リポジトリの場合、フォークへのアクセスは、リポジトリの可視性、組織のメンバーシップ、および管理者の設定によっても異なります。

[「AUTOTITLE](/ja/enterprise-server@3.21/organizations/managing-organization-settings/managing-the-forking-policy-for-your-organization) および [Enterprise でリポジトリ管理ポリシーを適用する](/ja/enterprise-server@3.21/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-forking-private-or-internal-repositories)。

## フォークの可視性

フォークの可視性は、アップストリーム リポジトリのリポジトリ ネットワークに関連付けられています。 パブリック リポジトリ フォークはパブリックであり、プライベート リポジトリ フォークはプライベートです。 内部リポジトリのフォークはプライベートです。 フォークの可視性を単独で変更することはできません。

リポジトリ ネットワーク内のすべてのリポジトリは、同じ可視性設定を共有します。 リポジトリネットワークには、アップストリームリポジトリ、そのフォーク、およびそのフォークから派生したフォークが含まれます。 「[リポジトリ間の接続を理解する](/ja/enterprise-server@3.21/repositories/viewing-activity-and-data-for-your-repository/understanding-connections-between-repositories)」を参照してください。

リポジトリを削除したり、可視性を変更したりすると、ネットワークに影響を与える可能性があります。 フォークを削除した場合、そのフォークからのコードコントリビューションはリポジトリ ネットワークから引き続きアクセスできます。

## リポジトリが削除されたとき、または可視性が変更された場合のフォークの動作

> \[!WARNING]
>
> * プライベートリポジトリへの個人のアクセス権を削除すると、そのプライベートリポジトリからその人が作成したフォークはすべて削除されます。 プライベートリポジトリのローカルクローンは残ります。 プライベート リポジトリへのチームのアクセスが取り消されるか、プライベート リポジトリへのアクセス権を持つチームが削除され、チーム メンバーが別のチームを介してリポジトリにアクセスできない場合、リポジトリのプライベート フォークが削除されます。
> *

[LDAP Sync が有効になっている](/ja/enterprise-server@3.21/admin/managing-iam/using-ldap-for-enterprise-iam/using-ldap#enabling-ldap-sync)と、ある人がリポジトリから削除された場合、その人はアクセス権を失いますが、その人のフォークは削除されません。 ユーザーが 3 か月以内に元の組織リポジトリにアクセスできるチームに追加された場合、フォークへのアクセスは次の同期時に自動的に復元されます。

> * リポジトリへのアクセスを失った個人に、機密情報や知的財産を確実に削除してもらうのは、あなたの責任です。
> * プライベート または内部 リポジトリに対する管理者アクセス許可を持つユーザーは、そのリポジトリのフォークを禁止することができ、組織の所有者は、組織内のプライベート または内部 リポジトリのフォークを禁止できます。 詳細については、「[Organization のフォークポリシーを管理する](/ja/enterprise-server@3.21/organizations/managing-organization-settings/managing-the-forking-policy-for-your-organization)」および「[リポジトリのフォークポリシーを管理する](/ja/enterprise-server@3.21/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/managing-the-forking-policy-for-your-repository)」を参照してください。

可視性の変更により、フォークを新しいリポジトリ ネットワークに分割できるため、既存のフォーク所有者は予期しないアクセスを失うことなく作業を続けることができます。

| アクション                    | フォークへの影響                                              |
| ------------------------ | ----------------------------------------------------- |
| プライベート リポジトリが削除される       | そのプライベートフォークも削除されます。                                  |
| パブリック リポジトリが削除される        | アクティブなパブリック フォークが、ネットワークの新しいアップストリーム リポジトリになります。      |
| パブリック リポジトリをプライベートに設定する  | そのパブリック フォークは、別のネットワークでパブリックに維持されます。                  |
| プライベート リポジトリがパブリックになっている | プライベートフォークはプライベートのままですが、それぞれ独立したプライベート ネットワークに分離されます。 |
|                          |                                                       |
| 内部リポジトリによって可視性が変更される     | 組織または個人アカウントが所有するフォークは、非公開のままです。                      |
|                          |                                                       |

パブリック リポジトリをプライベートに変更すると、星、ウォッチャー、依存関係グラフ、 Dependabot alerts、および code scanning 可用性にも影響を与える可能性があります。 変更する前に、リポジトリの可視性の設定を慎重に確認してください。

パブリック リポジトリで匿名 Git 読み取りアクセスが有効になっていて、リポジトリがプライベートになっている場合、リポジトリのすべてのフォークは匿名の Git 読み取りアクセスを失い、既定の無効な設定に戻ります。 分岐したリポジトリが公開された場合、リポジトリ管理者は匿名の Git 読み取りアクセスを再度有効にすることができます。 「[リポジトリに対する匿名 Git 読み取りアクセスを有効化する](/ja/enterprise-server@3.21/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/enabling-anonymous-git-read-access-for-a-repository)」を参照してください。

## フォークの権限

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

> \[!NOTE]
> 組織の基本アクセス許可を変更しても、プライベート フォークのアクセス許可は自動的に更新されません。詳細については、「[Organization の基本レベルの権限の設定](/ja/enterprise-server@3.21/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/setting-base-permissions-for-an-organization#about-base-permissions-for-an-organization)」を参照してください。

パブリック フォークは、上流のリポジトリのアクセス許可構造を継承しません。 フォーク所有者はフォークへのアクセスを制御しますが、リポジトリ ネットワークは引き続き Git データを共有します。 ネットワーク内の任意のリポジトリにプッシュされたコミットには、そのネットワーク内の他のリポジトリ (アップストリーム リポジトリを含む) からアクセスできます。

パブリック リポジトリを個人用アカウントにフォークすると、アップストリーム リポジトリの保守担当者が pull request ブランチにプッシュできるようになります。 これは、メンテナーがブランチを更新したり、テストを実行したり、マージする前に小さな問題を解決したりするのに役立ちます。 組織が所有するフォークにプッシュアクセス許可を付与することはできません。 「[Allowing changes to a pull request branch created from a fork](/ja/enterprise-server@3.21/pull-requests/how-tos/work-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork)」を参照してください。

### フォークされたリポジトリ向けのプッシュルールセット

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

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

「[ルールセットについて](/ja/enterprise-server@3.21/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets#push-rulesets)」を参照してください。

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

フォークは強力なコラボレーション ツールですが、見過ごしやすい方法でコードと履歴を公開できます。

* フォークには、上流のリポジトリとは別の固有のアクセス許可があります。
* アップストリーム リポジトリの所有者は、リポジトリ ネットワーク内のすべてのフォークを読み取ることができます。
* 組織の所有者は、個人用名前空間で作成されたフォークへの管理アクセス権を持つことができます。
* アップストリーム リポジトリへの誰かのアクセス権を削除しても、他の組織のフォークが必ずしも削除されるわけではありません。
* フォークが削除された後でも、リポジトリ ネットワーク内でコミットにアクセスできます。

機密性の高い作業のフォークを許可する前に、リポジトリまたは組織のアクセス許可と可視性モデルを確認します。

### 組織内のフォーク

同じ組織内のフォークは、アップストリーム リポジトリからコラボレーターとチーム設定をコピーします。 組織はこれらのフォークのアクセス許可を制御し、既存の目に見えるチームはアクセスを維持できます。

### 企業内におけるフォーク

内部リポジトリでは、単一レベルのフォークがサポートされます。 内部リポジトリのプライベート フォークをフォークすることはできません。 これにより、企業全体で表示されるリポジトリのアクセスと管理が簡単になります。