リポジトリのフォークはリポジトリのコピーと似ていますが、次の 2 つの大きな違いがあります。
- プルリクエストを使ってユーザが所有するフォークからの変更をオリジナルのリポジトリ(上流のリポジトリとも呼ばれます)に提案できます。
- 上流のリポジトリと自分のフォークを同期させることで、上流のリポジトリからの変更を自分のローカルフォークへ持ち込めます。
任意のパブリックなリポジトリを、自分のユーザアカウントあるいはリポジトリの作成権限を持っている任意のOrganization にフォークできます。 詳細は「Organization の権限レベル」を参照してください。
アクセス権を持っている任意のプライベートリポジトリを、自分のユーザアカウント及びリポジトリの作成権限を持っているGitHub TeamもしくはGitHub Enterprise上の任意のOrganizationにフォークできます。 GitHub Freeを使っているOrganizationには、プライベートリポジトリをフォークすることはできません。
GitHub Desktopを使ってリポジトリのフォークをすることができます。 詳しい情報については「GitHub Desktopからのリポジトリのクローンとフォーク」を参照してください。
フォークを削除しても、オリジナルの上流のリポジトリは削除されません。 オリジナルに影響を与えることなく、コラボレータの追加、ファイル名の変更、GitHub Pages の生成など、自分のフォークに必要な変更を加えることができます。
オープンソースプロジェクトでは、フォークを使用して、上流のリポジトリに提供される前にアイデアや変更をイテレーションすることがよくあります。 ユーザ所有のフォークに変更を加え、作業を上流リポジトリと比較するプルリクエストをオープンすると、上流リポジトリへのプッシュアクセスできる人に対して、変更をプルリクエストブランチにプッシュする権限を付与することができます。 これにより、リポジトリメンテナがマージする前に、ユーザが所有するフォークからプルリクエストブランチに対してローカルでコミットを実行したり、テストを実行したりすることができるようになり、コラボレーションがスピードアップします。 Organization が所有するフォークにプッシュ権限を与えることはできません。
プライベートフォークは、上流もしくは親リポジトリの権限構造を継承します。 たとえば、上流リポジトリがプライベートで読み取り/書き込みアクセスをあるTeamに与えているなら、そのチームはプライベートの上流リポジトリのすべてのフォークに読み取り/書き込みアクセスを持つことになります。 これは、プライベートリポジトリのオーナーがコードに対するコントロールを管理するための役に立ちます。
既存のリポジトリのコンテンツから新しいリポジトリを作成したいけれども、将来にわたって変更を上流にマージしたくない場合、リポジトリを複製するか、リポジトリがテンプレートである場合は、リポジトリをテンプレートとして使うことができます。 詳細は「リポジトリを複製する」および「テンプレートからリポジトリを作成する」を参照してください。