Skip to main content

フォークについて

フォークとは、元の "上流" リポジトリとコードと可視性の設定を共有する新しいリポジトリです。

フォークについて

フォークを使うと、オリジナルのリポジトリ ("上流の" リポジトリとも呼ばれます) に影響を与えることなくプロジェクトを変更できます。 リポジトリをフォークした後は、上流のリポジトリから更新をフェッチしてフォークを最新の状態に保つことができ、pull request を使ってフォークから上流のリポジトリに変更を提案できます。 フォークは、個人用アカウントまたは組織に存在できます。

フォークされたリポジトリを GitHub で表示すると、上流のリポジトリがフォークの名前の下に示されます。

GitHub でのリポジトリのページのスクリーンショット。 リポジトリの名前 "mona/docs" の下で、"github/docs からフォークされた" というテキストがオレンジ色で囲まれています。

オープンソース プロジェクトでは、上流のリポジトリに変更を組み込む前に、フォークを使ってアイデアや変更を繰り返すことがよくあります。 パブリック リポジトリを個人用アカウントにフォークして変更を加えた後、pull request を開いて上流リポジトリに変更を提案する場合、上流リポジトリへのプッシュ アクセス許可を持つどのユーザーにも、pull request ブランチに変更をプッシュする (ブランチの削除を含む) アクセス許可を付与することができます。 これにより、リポジトリの保守管理者がマージする前に、ユーザー所有のフォークから pull request ブランチにローカルでコミットしたりテストを実行したりできるようになり、コラボレーションのスピードアップにつながります。 Organization が所有するフォークにプッシュ権限を与えることはできません。 詳しくは、「フォークから作成されたプルリクエストのブランチへの変更の許可」を参照してください。

フォークを削除しても、オリジナルの上流のリポジトリは削除されません。 フォークにプッシュされたコードはアップストリームから表示されますが、変更はアップストリームブランチにはすぐには影響しません。 たとえば、アップストリームブランチに影響を与えることなく、フォーク上でコラボレーターの追加、ファイル名の変更、GitHub Pages の生成を行うことができます。 削除されたフォークを復元することはできません。 詳しくは、「削除したリポジトリの復元」をご覧ください。プライベート リポジトリを削除すると、そのリポジトリのすべてのフォークが削除されます。

リポジトリの [フォーク] ページで、リポジトリのフォークを表示、並べ替え、フィルター処理できます。 詳細については、「リポジトリ間の接続を理解する」を参照してください。

フォークの作成について

任意のパブリック リポジトリを、自分の個人アカウント、またはリポジトリを作成するアクセス許可を自分が持っている Organization に、フォークできます。 プライベート リポジトリにアクセスでき、その所有者がフォークを許可している場合は、そのリポジトリを、自分の個人アカウント、またはリポジトリを作成するアクセス許可を自分が持っている GitHub Team 上の Organization に、フォークできます。 プライベート リポジトリは、GitHub Free を使っている組織にはフォークできません。 GitHub Team と GitHub Free について詳しくは、「GitHub のプラン」をご覧ください。

リポジトリをフォークする手順については、「リポジトリをフォークする」をご覧ください。 フォークを作成できるタイミング、およびフォークのアクセス許可と表示の設定について詳しくは、「フォークのアクセス許可と可視性について」をご覧ください。

Tip

GitHub Desktopを使ってリポジトリのフォークをすることができます。 詳しくは、「GitHub Desktopからのリポジトリのクローンとフォーク」を参照してください。

リポジトリのフォークとリポジトリの複製

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

リポジトリのフォークは、リポジトリの複製と似ていますが、次のような違いがあります。

  • フォークにプッシュされたコードは、フォークが削除された後でも、フォーク ネットワーク内のすべてのリポジトリに表示されます。
  • pull request を使って、フォークから上流のリポジトリへの変更を提案できます。
  • 自分のフォークと上流のリポジトリを同期することで、上流のリポジトリから自分のフォークに変更を取り込むことができます。
  • フォークには、固有のメンバー、ブランチ、タグ、ラベル、ポリシー、issue、pull request、ディスカッション、アクション、プロジェクト、Wiki があります。
  • フォークは、上流のリポジトリの制限を継承します。 たとえば、上流のリポジトリが GitHub Free プランで Organization に属している場合、ブランチ保護ルールを下流に渡すことはできません。

参考資料