フォークについて
フォークとは、元の "上流" リポジトリとコードと可視性の設定を共有する新しいリポジトリです。 多くの場合、フォークは、上流リポジトリに再提案する前に、アイデアや変更に繰り返し取り組むために使用されます。たとえば、オープンソース プロジェクトや、ユーザーが上流リポジトリへの書き込みアクセス権を持っていない場合などです。詳しくは、「フォークを使って作業する」をご覧ください。
他のユーザのプロジェクトへの変更を提案する
たとえば、フォークを使用して、バグの修正に関連する変更を提案できます。 見つけたバグから issue をログに記録するのではなく、以下のことを行えます。
- リポジトリをフォークします。
- 修正する。
- プロジェクトのオーナーにプルリクエストを送信する。
他のユーザのプロジェクトを自分のアイディアの出発点として活用する。
オープンソースソフトウェアは、コードを共有することで、より優れた、より信頼性の高いソフトウェアを作成可能にするという考えに基づいています。 詳細については、オープンソース イニシアティブの「オープンソース イニシアティブについて」を参照してください。
GitHub での organization の開発作業にオープンソースの原則を適用する方法の詳細については、GitHub のホワイト ペーパー「インナーソースの概要」を参照してください。
他のユーザのプロジェクトのフォークからパブリックリポジトリを作成する際は、プロジェクトの他者との共有方法を定義するライセンスファイルを必ず含めてください。 詳細については、choosealicense.com の「オープンソース ライセンスの選択」を参照してください。
オープン ソースに関する詳しい情報、特にオープン ソース プロジェクトの立ち上げと成長させる方法について、「オープン ソース ガイド」を作成しました。これは、オープン ソース プロジェクトのためのリポジトリの作成と管理に関するベスト プラクティスを推奨することで、健全なオープン ソース コミュニティの育成を支援するものです。 オープン ソース コミュニティの維持に関する無料の GitHub Skills コースを受講することもできます。
前提条件
まだ設定していない場合は、まず Git と、Git からの GitHub.com での認証を設定してください。 詳しくは、「Git のセットアップ」を参照してください。
リポジトリをフォークする
上流リポジトリへの変更を提案するために、プロジェクトをフォークする場合があります。 この場合、自分のフォークを上流のリポジトリと定期的に同期させるとよいでしょう。 これには、コマンドラインで Git を使用する必要があります。 フォークしたのと同じ octocat/Spoon-Knife リポジトリを使用して、アップストリーム リポジトリの設定を練習できます。
-
GitHub で、octocat/Spoon-Knife リポジトリに移動します。
-
ページの右上隅の [フォーク] を選択します。
-
[所有者] の下のドロップダウン メニューを選び、フォークされたリポジトリの所有者をクリックします。
-
既定では、フォークの名前はその上流リポジトリと同じです。 必要に応じて、[リポジトリ名] フィールドに名前を入力すると、フォークをさらに区別できます。
-
必要に応じて、[説明] フィールドにフォークの説明を入力します。
-
必要に応じて、 [DEFAULT ブランチのみをコピーする] を選びます。
オープンソース プロジェクトへのコントリビューションなど、多くのフォーク シナリオでは、既定のブランチのみをコピーする必要があります。 このオプションを選ばないと、すべてのブランチが新しいフォークにコピーされます。
-
[フォークの作成] をクリックします。
注: 上流リポジトリから追加のブランチをコピーする場合は、 [Branches] ページから行うことができます。 詳細については、「リポジトリ内でブランチを作成および削除する」をご覧ください。
GitHub CLI の詳細については、「GitHub CLI について」を参照してください。
リポジトリのフォークを作成するには、gh repo fork
サブコマンドを使用します。
gh repo fork REPOSITORY
組織内でフォークを作成するには、--org
フラグを使用します。
gh repo fork REPOSITORY --org "octo-org"
GitHub.com または GitHub Desktop でリポジトリをフォークできます。 GitHub.com でのフォークについて詳しくは、この記事の Web ブラウザー バージョンをご覧ください。
GitHub Desktop では、自分が書き込みアクセス権を持っていないリポジトリをクローンしようとすると、フォークが自動的に作成されます。
-
[ファイル] メニューの [リポジトリの複製] をクリックします。
-
クローンしたいリポジトリの場所に対応するタブをクリックしてください。 URL をクリックして、リポジトリの場所を手動で入力することもできます。
-
リポジトリの一覧から、クローンするリポジトリをクリックします。
-
リポジトリをクローンする先のローカル ディレクトリを選ぶには、[ローカル パス] フィールドの横にある [選択] をクリックし、そのディレクトリに移動します。
-
[リポジトリのクローン] ウィンドウの下部にある [クローン] をクリックします。
-
[How are you planning to use this fork?] (このフォークはどのように使う予定ですか?) ウィンドウの情報を読みます ] ウィンドウと同じです。
- オリジナルの上流のリポジトリへのコントリビューションにこのフォークを使うつもりなのであれば、 [To contribute to the parent project] (親プロジェクトへのコントリビュート) をクリックしてください。
- 上流に接続されていないプロジェクトにこのフォークを使うつもりなのであれば、 [For my own purposes] (自分自身の目的のため) をクリックしてください。
-
[続行] をクリックします。
フォークされたリポジトリを複製する
今、Spoon-Knife リポジトリのフォークが存在していますが、お使いのコンピューターのローカルには、そのリポジトリ内のファイルは存在していません。
-
GitHub で、Spoon-Knife リポジトリの自分のフォークに移動します。
-
ファイルの一覧の上にある [コード] をクリックします。
-
リポジトリの URL をコピーします。
-
HTTPS を使ってリポジトリをクローンするには、[HTTPS] の下の をクリックします。
-
Organization の SSH 認証機関から発行された証明書などの SSH キーを使ってリポジトリをクローンするには、 [SSH] をクリックしてから、 をクリックします。
-
GitHub CLI を使ってリポジトリをクローンするには、 [GitHub CLI] をクリックしてから、 をクリックします。
-
-
[ターミナル][ターミナル][Git Bash] を開きます。
-
カレントワーキングディレクトリを、ディレクトリをクローンしたい場所に変更します。
-
「
git clone
」と入力し、既にコピーした URL を貼り付けます。 次のようになるはずです。YOUR-USERNAME
を自分の GitHub のユーザー名に置き換えてください。git clone https://github.com/YOUR-USERNAME/Spoon-Knife
-
Enter キーを押します。 これで、ローカルにクローンが作成されます。
$ git clone https://github.com/YOUR-USERNAME/Spoon-Knife > Cloning into `Spoon-Knife`... > remote: Counting objects: 10, done. > remote: Compressing objects: 100% (8/8), done. > remote: Total 10 (delta 1), reused 10 (delta 1) > Unpacking objects: 100% (10/10), done.
GitHub CLI の詳細については、「GitHub CLI について」を参照してください。
フォークのクローンを作成するには、--clone
フラグを使用します。
gh repo fork REPOSITORY --clone=true
-
[ファイル] メニューの [リポジトリの複製] をクリックします。
-
クローンしたいリポジトリの場所に対応するタブをクリックしてください。 URL をクリックして、リポジトリの場所を手動で入力することもできます。
-
リポジトリの一覧から、クローンするリポジトリをクリックします。
-
リポジトリをクローンする先のローカル ディレクトリを選ぶには、[ローカル パス] フィールドの横にある [選択] をクリックし、そのディレクトリに移動します。
-
[リポジトリのクローン] ウィンドウの下部にある [クローン] をクリックします。
フォークが上流リポジトリと同期するように Git を構成する
プロジェクトをフォークして上流リポジトリへの変更を提案する場合は、Git を構成することで、上流リポジトリからフォークのローカルのクローンへ変更をプルできます。
-
GitHub で、octocat/Spoon-Knife リポジトリに移動します。
-
ファイルの一覧の上にある [コード] をクリックします。
-
リポジトリの URL をコピーします。
-
HTTPS を使ってリポジトリをクローンするには、[HTTPS] の下の をクリックします。
-
Organization の SSH 認証機関から発行された証明書などの SSH キーを使ってリポジトリをクローンするには、 [SSH] をクリックしてから、 をクリックします。
-
GitHub CLI を使ってリポジトリをクローンするには、 [GitHub CLI] をクリックしてから、 をクリックします。
-
-
[ターミナル][ターミナル][Git Bash] を開きます。
-
複製したフォークの場所にディレクトリを変更します。
- ホーム ディレクトリに移動するには、他のテキストを含めずに「
cd
」と入力します。 - 現在のディレクトリのファイルとフォルダーを一覧表示するには、「
ls
」と入力します。 - 一覧表示されているディレクトリのいずれかに移動するには、「
cd YOUR-LISTED-DIRECTORY
」と入力します。 - 1 つ上のディレクトリに移動するには、「
cd ..
」と入力します。
- ホーム ディレクトリに移動するには、他のテキストを含めずに「
-
「
git remote -v
」と入力して Enter キーを押します。 フォーク用に現在構成されているリモート リポジトリが表示されます。$ git remote -v > origin https://github.com/YOUR-USERNAME/YOUR-FORK.git (fetch) > origin https://github.com/YOUR-USERNAME/YOUR-FORK.git (push)
-
「
git remote add upstream
」と入力し、手順 3 でコピーした URL を貼り付け、Enter キーを押します。 次のようになります。git remote add upstream https://github.com/ORIGINAL-OWNER/Spoon-Knife.git
-
フォーク用に指定した新しい上流リポジトリを検証するには、再度「
git remote -v
」と入力します。 フォークの URL はorigin
のように表示され、上流リポジトリの URL はupstream
のように表示されます。$ git remote -v > origin https://github.com/YOUR-USERNAME/YOUR-FORK.git (fetch) > origin https://github.com/YOUR-USERNAME/YOUR-FORK.git (push) > upstream https://github.com/ORIGINAL-OWNER/ORIGINAL-REPOSITORY.git (fetch) > upstream https://github.com/ORIGINAL-OWNER/ORIGINAL-REPOSITORY.git (push)
これで、いくつかの Git コマンドでフォークと上流リポジトリの同期を維持できます。 詳しくは、「フォークを同期する」を参照してください。
GitHub CLI の詳細については、「GitHub CLI について」を参照してください。
フォークされたリポジトリのリモート リポジトリを構成するには、--remote
フラグを使用します。
gh repo fork REPOSITORY --remote=true
リモート リポジトリの名前を指定するには、--remote-name
フラグを使用します。
gh repo fork REPOSITORY --remote-name "main-remote-repo"
フォークを編集する
フォークには、次のような変更を加えることができます。
- ブランチの作成: ブランチ を使用すると、メイン プロジェクトを危険にさらすことなく、新しい機能を構築し、アイデアをテストできます。
- pull request を開く: 上流リポジトリに投稿する場合は、pull request を送信することで、フォークをそのリポジトリにプルする要求を元の作成者に送信できます。
フォークする他のリポジトリを見つける
リポジトリをフォークしてプロジェクトへのコントリビューションを開始しましょう。 任意のパブリック リポジトリを、自分の個人アカウント、またはリポジトリを作成するアクセス許可を自分が持っている Organization に、フォークできます。 プライベート リポジトリにアクセスでき、その所有者がフォークを許可している場合は、そのリポジトリを、自分の個人アカウント、またはリポジトリを作成するアクセス許可を自分が持っている GitHub Team 上の Organization に、フォークできます。 プライベート リポジトリは、GitHub Free を使っている組織にはフォークできません。 GitHub Team と GitHub Free について詳しくは、「GitHub のプラン」をご覧ください。 どのようなときにリポジトリをフォークできるかについて詳しくは、「フォークのアクセス許可と可視性について」をご覧ください。
[GitHub の探索] を参照すると、プロジェクトを検索し、オープンソース リポジトリへの投稿を開始できます。 詳しくは、「GitHub でオープンソースにコントリビュートする方法を見つける」を参照してください。
次のステップ
リポジトリをフォークし、フォークのクローンを練習し、上流リポジトリを構成しました。
-
フォークのクローンと、コンピューターからフォークしたリポジトリの変更を同期する方法について詳しくは、「Git のセットアップ」をご覧ください。
-
新しいリポジトリを作成して、すべてのプロジェクトを配置し、コードを GitHub で共有することもできます。 プロジェクトのリポジトリを作成すると、コードを GitHub に格納できます。 これにより、他の開発者と共有するために選択できる作業のバックアップが提供されます。 詳しくは、「リポジトリのクイック スタート」を参照してください。
-
GitHub の各リポジトリは、個人または組織が所有しています。 GitHub に接続してフォローすることで、ユーザー、リポジトリ、および組織と対話できます。 詳しくは、「GitHub でのインスピレーションの発見」を参照してください。
-
GitHub には素晴らしいサポート コミュニティがあり、助けを求め、世界中の人々と話すことができます。 GitHub Community で会話に参加してください。