Skip to main content

フォークについて

フォークはユーザが管理するリポジトリのコピーです。 フォークを使えば、オリジナルのリポジトリに影響を与えることなくプロジェクトへの変更を行えます。 オリジナルのリポジトリから更新をフェッチしたり、プルリクエストでオリジナルのリポジトリに変更をサブミットしたりできます。

リポジトリのフォークはリポジトリのコピーと似ていますが、次の 2 つの大きな違いがあります。

  • pull request を使って、ユーザーが所有するフォークからの変更を、GitHub 内にあるオリジナルのリポジトリ (上流 のリポジトリとも呼ばれます) に提案できます。

  • 上流のリポジトリと自分のフォークを同期させることで、上流のリポジトリからの変更を自分のローカルフォークへ持ち込めます。

    リポジトリの設定と組織のポリシーでフォークが許可されている場合は、プライベートまたは内部リポジトリを、ご自分の個人アカウントや、リポジトリの作成権限を持っている your GitHub Enterprise Server instance 上の組織にフォークできます。

You can use GitHub Desktop to fork a repository. For more information, see "Cloning and forking repositories from GitHub Desktop."

フォークを削除しても、オリジナルの上流のリポジトリは削除されません。 オリジナルに影響を与えることなく、コラボレータの追加、ファイル名の変更、GitHub Pages の生成など、自分のフォークに必要な変更を加えることができます。

オープンソースプロジェクトでは、フォークを使用して、上流のリポジトリに提供される前にアイデアや変更をイテレーションすることがよくあります。 ユーザーが所有するフォークに変更を加え、作業を上流リポジトリと比較する pull request をオープンすると、上流リポジトリにプッシュ アクセスできるどのユーザーにも、変更を pull request ブランチにプッシュする権限 (ブランチの削除を含む) を付与することができます。 これにより、リポジトリメンテナがマージする前に、ユーザが所有するフォークからプルリクエストブランチに対してローカルでコミットを実行したり、テストを実行したりすることができるようになり、コラボレーションがスピードアップします。 Organization が所有するフォークにプッシュ権限を与えることはできません。

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

既存のリポジトリのコンテンツから新しいリポジトリを作成したいものの、その後は変更を上流にマージしたくない場合は、リポジトリを複製するか、リポジトリがテンプレートである場合は、リポジトリをテンプレートとして使うことができます。 詳しい情報については、「リポジトリを複製する」と「テンプレートからリポジトリを作成する」を参照します。

参考資料