GitHubリポジトリを正しくフォークする方法
オープンソースプログラミングは、他の人が書いたコードに自分の変更を加えることができることが全てです。それを行うには、主なリポジトリから分岐する必要があります。一般的には「フォーク」と呼ばれる行為ですが、適切に行わないと複雑になる可能性があります。
これは特にGithubに当てはまりますが、オープンソースのコラボレーションのための最も大きな場所であるため、同じ原則はあらゆるソースからフォークされたGitリポジトリにも適用されます。Githubには一部のタスクを簡単にする追加のツールがありますが、Gitコマンドを好む場合は、それも示します。
GitHubからフォークする
GitHubを使用している場合、リポジトリをフォークする最も簡単な方法は「Fork」ボタンをクリックすることです。これにより、自動的にあなたのアカウントに新しいリポジトリが作成され、クローンするときにリモートが設定されます。これにより、元のリポジトリの「forks」タブに表示され、あなたのリポジトリには「Xからフォークされた」と表示されます。
それが表示されるのを望まない場合、またはGithubを使用していない場合は、手動でクローンする必要があります。
自分でクローンする場合は、「ZIPをダウンロード」するのではなく、リポジトリを正しくクローンするようにしてください。Gitを通じてクローンしないと、バージョン履歴がコピーされず、Gitリポジトリとして構成されません。
フォークのアップストリームリモートを設定する
もしGitHubウェブサイトからリポジトリをフォークした場合、originリモートはあなたのフォークを指します。しかし、元のソースリポジトリ(「アップストリーム」と呼ばれます)からpullできることも便利です。彼らが変更を加えた場合、あなたはおそらくアップストリームリモートとのマージまたはリベースを行いたくなるでしょう。
Githubには自動でこれを行うためのツールが組み込まれているので、この部分を自分で行う必要はありませんが、CLIツールを使用する場合は、元のリポジトリを「upstream」というリモートとして追加する必要があります。
git remote add upstream https://github.com/author/original.gitGit CLIからのフォーク
他の場所からダウンロードまたはクローンした場合、リポジトリは元のリモートとリンクされたままになります。これは、フォークするつもりでリポジトリをダウンロードした場合に起こった可能性があります。幸いなことに、これは全く問題ないので、自分で設定する必要があります。
ソースから新しい変更を統合したい場合、ソースのリモートは必要ですが、それがデフォルトの "origin" リモートであるべきではありません。したがって、デフォルトのリモートを "origin" から "upstream" に名前を変更する必要があります。
git remote rename origin upstreamそして、あなた自身のリモートを新しい「origin」として追加します。これは、あなたがGithubにプッシュする予定がある場合、おそらく手動で作成する必要があります:
git remote add origin https://github.com/author/ForkNameそれが終わったら、おそらく各ブランチのデフォルトリモートをあなたのフォークに設定する必要があります:
git branch --set-upstream-to origin
そしてオリジンにプッシュすると、ファイルが新しいリポジトリにアップロードされます。
新しい変更を更新しています
GitHubからフォークした場合、便利な機能の一つは、アップストリームソースを追跡し、GitHubのウェブサイトを通じてマージを行うことができる点です。最新の状態であるときにはその旨が表示され、最新ではない場合にはマージするオプションが提供されます。
もしGit CLIを使ってそれを行いたいなら、より良い方法があります。リベースはマージに似ていますが、フラットなコミット階層を保ちながら、不必要なマージコミットを生じさせません。通常、アップストリームの変更を統合する際にはリベースを使用することをお勧めしますが、これはあなたの判断次第です。マージも有効な戦略であり、特にあまり頻繁にマージしない場合にはそうです。
変更を統合するには、upstream リモートを取得し、master ブランチをチェックアウトして、upstream/master にリベースする必要があります。
git fetch upstream
git checkout master
git rebase upstream/master
これが終わったら、最初にリベースする場合は強制プッシュが必要になるかもしれません:
git push -f origin masterプルリクエストを作成する
Githubからフォークした場合も簡単です。「貢献する」を押すだけで、自動的にプルリクエストが開かれます。
そうでなければ、プロセスはまだ簡単です。上流のリポジトリに移動し、「プルリクエスト」タブの下で「新しいプルリクエスト」を選択します。
次に、「フォーク間で比較」を選択し、あなたのフォークリポジトリを見つける必要があります。マージしたいブランチを選択し、「プルリクエストを作成」をクリックします。
フォークで作業を続けることができ、必要に応じてプルリクエストをマージできます。もしこれを頻繁に行うのであれば、機能のためにローカルで独自のブランチをセットアップし、プルリクエストを作成したい時に対象のアップストリームブランチにマージすることを検討しても良いかもしれません。これにより、プルリクエストのテーマを保ち、同時に1つの機能ブランチに集中させることが助けになります。







