フォークについて
他のユーザーのプロジェクトに貢献したいけれども、直接変更するアクセス許可がない場合は、プロジェクトの独自のコピーを作成し、更新を行ってから、それらの更新をメイン プロジェクトに含めることを提案できます。 このプロセスは、"フォークと pull request" ワークフローと呼ばれることがよくあります。
プロジェクトの独自のコピー (つまり "フォーク") を作成するのは、元のプロジェクトとコードを共有する新しいワークスペースを作成するようなものです。 これは、オープンソース プロジェクトの場合や、元のプロジェクトへの書き込みアクセス権を持っていない場合に役に立ちます。
自分のコピーで変更を行った後、それを pull request として送信できます。これは、変更をメイン プロジェクトに戻すことを提案する方法です。 詳しくは、「リポジトリをフォークする」をご覧ください。
プロジェクトの独自コピーの作成
このチュートリアルでは、Spoon-Knife プロジェクト (GitHub でホストされているテスト リポジトリ) を使用して、フォークと pull request のワークフローをテストします。
-
https://github.com/octocat/Spoon-Knife で
Spoon-Knife
プロジェクトに移動します。 -
ページの右上隅の [フォーク] を選択します。
-
[所有者] の下のドロップダウン メニューを選び、フォークされたリポジトリの所有者をクリックします。
Note
ユーザー名が淡色表示になっている場合、フォークが既に存在します。 その代わりに、既存のフォークを最新の状態にする必要があります。 詳しくは、「フォークを同期する」をご覧ください。
-
既定では、フォークの名前はその上流リポジトリと同じです。 必要に応じて、[リポジトリ名] フィールドに名前を入力すると、フォークをさらに区別できます。
-
必要に応じて、[説明] フィールドにフォークの説明を入力します。
-
必要に応じて、 [DEFAULT ブランチのみをコピーする] を選びます。
オープンソース プロジェクトへのコントリビューションなど、多くのフォーク シナリオでは、既定のブランチのみをコピーする必要があります。 このオプションを選ばないと、すべてのブランチが新しいフォークにコピーされます。
-
[フォークの作成] をクリックします。
Note
上流リポジトリから追加のブランチをコピーする場合は、[Branches] ページから行うことができます。 詳しくは、「リポジトリ内でブランチを作成および削除する」をご覧ください。
自分のコンピューターへのフォークのクローン
Spoon-Knife リポジトリのフォークが正常に生成されましたが、現時点では GitHub にのみ存在しています。 プロジェクトで作業できるようにするには、コンピューターに複製する必要があります。
フォークは、コマンド ライン、GitHub CLI、または GitHub Desktop を使用して複製できます。
-
GitHub で、Spoon-Knife リポジトリの自分のフォークに移動します。
-
ファイルの一覧の上にある [コード] をクリックします。
-
リポジトリの URL をコピーします。
-
HTTPS を使ってリポジトリをクローンするには、[HTTPS] の下の をクリックします。
-
Organization の SSH 認証機関から発行された証明書などの SSH キーを使ってリポジトリをクローンするには、 [SSH] をクリックしてから、 をクリックします。
-
GitHub CLI を使ってリポジトリをクローンするには、 [GitHub CLI] をクリックしてから、 をクリックします。
-
-
[ターミナル] を開きます。
-
カレントワーキングディレクトリを、ディレクトリをクローンしたい場所に変更します。
-
「
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. > remove: Total 10 (delta 1), reused 10 (delta 1) > Unpacking objects: 100% (10/10), done.
作業のためのブランチの作成
プロジェクトへの変更を行う前に、新しいブランチを作成してチェックアウトする必要があります。独自のブランチに変更を保持することで、GitHub のフローに従うことになり、今後同じプロジェクトに再び貢献するのが容易になります。 「GitHub フロー」を参照してください。
git branch BRANCH-NAME
git checkout BRANCH-NAME
変更の作成とプッシュ
Visual Studio Code などのお気に入りのテキスト エディターを使用して、プロジェクトにいくつかの変更を加えます。 たとえば、index.html
のテキストを変更して自分の GitHub ユーザー名を追加できます。
変更を送信する準備ができたら、変更をステージングしてコミットします。 git add .
は、次のコミットにすべての変更を含める必要があることを Git に指示します。 git commit
は、これらの変更のスナップショットを取得します。
git add .
git commit -m "a short description of the change"
ファイルをステージングしてコミットすると、基本的に Git に「変更のスナップショットを作成してください」と Git に指示したことになります。 引き続き変更を加え、より多くのコミットのスナップショットを作成できます。
現時点では、変更はローカルにのみ存在します。 変更を GitHub にプッシュする準備ができたら、変更をリモートにプッシュします。
git push
pull request の作成
やっと、メイン プロジェクトに変更を提案する準備ができました。 これは、他の誰かのプロジェクトのフォークを生成する最後のステップであり、間違いなく最も重要です。 コミュニティ全体に利益をもたらすと感じる変更を加えた場合は、ぜひ貢献することを検討してください。
そのためには、プロジェクトが存在する GitHub のリポジトリに進みます。 この例では、https://github.com/<your_username>/Spoon-Knife
です。 自分のブランチが octocat:main
よりも 1 コミット分進んでいることを示すバナーが表示されます。 [貢献] をクリックし、 [Open a pull request](pull request を開く) をクリックします。
GitHub を使用すると、フォークと octocat/Spoon-Knife
リポジトリの違いを示すページが表示されます。 [Pull request の作成] をクリックします。
GitHub を使用すると、タイトルと変更の説明を入力できるページが表示されます。 そもそもこの pull request を行う理由について、できるだけ多くの有用な情報と根拠を提供することが重要です。 プロジェクトの所有者は、変更が自分が考えるほどすべてのユーザーにとって役に立つかどうかを判断できる必要があります。 [pull request の作成] をクリックします。
フィードバックの管理
pull request は検討の対象となります。 プロジェクト所有者が pull request を拒否したり、リクエストが行われた理由の詳細を求めても、気を悪くしないでください。 プロジェクト所有者が pull request をマージしないことを選択した場合でも、変更はフォークに引き続き存在します。 他の誰かがあなたのフォークを元のプロジェクトよりもはるかに価値があると思うかもしれません。
プロジェクトの検索
正常にリポジトリをフォークし、リポジトリに貢献しました。 引き続き貢献をお願いします。詳細については、「GitHub でオープンソースにコントリビュートする方法を見つける」を参照してください。
プロジェクトについての理解
初めて関わるプロジェクトの場合は、Copilot を使って、リポジトリの目的を理解し、ファイルを調べ、特定のコード行に取り組むことができます。 「プロジェクトを探索するための GitHub Copilot の使用」を参照してください。