フォークについて
フォークとは、元の "上流" リポジトリとコードと可視性の設定を共有する新しいリポジトリです。 多くの場合、フォークは、上流リポジトリに再提案する前に、アイデアや変更に繰り返し取り組むために使用されます。たとえば、オープンソース プロジェクトや、ユーザーが上流リポジトリへの書き込みアクセス権を持っていない場合などです。詳しくは、「フォークを使って作業する」をご覧ください。
他のユーザのプロジェクトへの変更を提案する
たとえば、フォークを使用して、バグの修正に関連する変更を提案できます。 見つけたバグから issue をログに記録するのではなく、以下のことを行えます。
- リポジトリをフォークします。
- 修正する。
- プロジェクトのオーナーにプルリクエストを送信する。
他のユーザのプロジェクトを自分のアイディアの出発点として活用する。
オープンソースソフトウェアは、コードを共有することで、より優れた、より信頼性の高いソフトウェアを作成可能にするという考えに基づいています。 詳細については、オープンソース イニシアティブの「オープンソース イニシアティブについて」を参照してください。
ご自分のエンタープライズ で Organization の開発作業にオープンソースの原則を適用する詳細の方法については、GitHub のホワイト ペーパー「InnerSource の概要」を参照してください。
前提条件
まだ設定していない場合は、まず Git と、Git からの ご自分のエンタープライズ での認証を設定してください。 詳しくは、「Git のセットアップ」を参照してください。
リポジトリをフォークする
上流リポジトリへの変更を提案するために、プロジェクトをフォークする場合があります。 この場合、自分のフォークを上流のリポジトリと定期的に同期させるとよいでしょう。 これには、コマンドラインで Git を使用する必要があります。 フォークしたのと同じ octocat/Spoon-Knife リポジトリを使用して、アップストリーム リポジトリの設定を練習できます。
-
ご自分のエンタープライズ で、octocat/Spoon-Knife リポジトリに移動します。
-
ページの右上隅の [フォーク] を選択します。
-
[所有者] の下のドロップダウン メニューを選び、フォークされたリポジトリの所有者をクリックします。
-
既定では、フォークの名前はその上流リポジトリと同じです。 必要に応じて、[リポジトリ名] フィールドに名前を入力すると、フォークをさらに区別できます。
-
必要に応じて、[説明] フィールドにフォークの説明を入力します。
-
[フォークの作成] をクリックします。
注: 上流リポジトリから追加のブランチをコピーする場合は、 [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 リポジトリのフォークが存在していますが、お使いのコンピューターのローカルには、そのリポジトリ内のファイルは存在していません。
-
ご自分のエンタープライズ で、Spoon-Knife リポジトリの自分のフォークに移動します。
-
ファイルの一覧の上にある [コード] をクリックします。
-
リポジトリの URL をコピーします。
-
HTTPS を使ってリポジトリをクローンするには、[HTTPS] の下の をクリックします。
-
Organization の SSH 認証機関から発行された証明書などの SSH キーを使ってリポジトリをクローンするには、 [SSH] をクリックしてから、 をクリックします。
-
GitHub CLI を使ってリポジトリをクローンするには、 [GitHub CLI] をクリックしてから、 をクリックします。
-
-
[ターミナル][ターミナル][Git Bash] を開きます。
-
カレントワーキングディレクトリを、ディレクトリをクローンしたい場所に変更します。
-
「
git clone
」と入力し、既にコピーした URL を貼り付けます。 次のようになるはずです。YOUR-USERNAME
を自分の GitHub AE のユーザー名に置き換えてください。git clone https://HOSTNAME/YOUR-USERNAME/Spoon-Knife
-
Enter キーを押します。 これで、ローカルにクローンが作成されます。
$ git clone https://HOSTNAME/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 を構成することで、上流リポジトリからフォークのローカルのクローンへ変更をプルできます。
-
ご自分のエンタープライズ で、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://HOSTNAME/YOUR_USERNAME/YOUR_FORK.git (fetch) > origin https://HOSTNAME/YOUR_USERNAME/YOUR_FORK.git (push)
-
「
git remote add upstream
」と入力し、手順 3 でコピーした URL を貼り付け、Enter キーを押します。 次のようになります。git remote add upstream https://HOSTNAME/ORIGINAL_OWNER/Spoon-Knife.git
-
フォーク用に指定した新しい上流リポジトリを検証するには、再度「
git remote -v
」と入力します。 フォークの URL はorigin
のように表示され、上流リポジトリの URL はupstream
のように表示されます。$ git remote -v > origin https://HOSTNAME/YOUR_USERNAME/YOUR_FORK.git (fetch) > origin https://HOSTNAME/YOUR_USERNAME/YOUR_FORK.git (push) > upstream https://HOSTNAME/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch) > upstream https://HOSTNAME/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 を送信することで、フォークをそのリポジトリにプルする要求を元の作成者に送信できます。
フォークする他のリポジトリを見つける
リポジトリをフォークしてプロジェクトへのコントリビューションを開始しましょう。 Enterprise のポリシーでプライベートおよび内部リポジトリのフォークが許可されている場合は、自分の個人アカウント、またはリポジトリを作成するアクセス許可を自分が持っている Organization に、リポジトリをフォークできます。 詳しくは、「Organizationのロール」を参照してください。
どのようなときにリポジトリをフォークできるかについて詳しくは、「フォークのアクセス許可と可視性について」をご覧ください。
次の手順
リポジトリをフォークし、フォークのクローンを練習し、上流リポジトリを構成しました。
-
フォークのクローンと、コンピューターからフォークしたリポジトリの変更を同期する方法について詳しくは、「Git のセットアップ」をご覧ください。
-
新しいリポジトリを作成して、すべてのプロジェクトを配置し、コードを GitHub で共有することもできます。 プロジェクトのリポジトリを作成すると、コードを GitHub に格納できます。 これにより、他の開発者と共有するために選択できる作業のバックアップが提供されます。 詳細については、「リポジトリを作成する」を参照してください。"
-
GitHub の各リポジトリは、個人または組織が所有しています。 GitHub AE に接続してフォローすることで、ユーザー、リポジトリ、および組織と対話できます。 詳しくは、「ソーシャル機能」を参照してください。
-
GitHub には素晴らしいサポート コミュニティがあり、助けを求め、世界中の人々と話すことができます。 GitHub Community で会話に参加してください。