はじめに
フォークとはリポジトリのコピーのことをいいます。 共同開発する場合に元のリポジトリに影響を与えることなく各自で開発を行えるための仕組みになっています。
一般的にフォークは、他のユーザのプロジェクトへの変更を提案するため、 あるいは他のユーザのプロジェクトを自分のアイディアの出発点として活用するために使用します。
Github Docs引用
今回はフォークを初回に行う場合と、初回以降に最新の状態を追従する方法についてまとめました。
基本的には下記の内容を参考にすれば実施できるので、この記事で全体感を掴みつつ詳細をリンク先で確認してもらえれると良いかと思います。
手順
初回にフォークして、プルリクエストを作成するまで
(1)Githubにあるフォーク元リポジトリから、自分のGithubのリポジトリへフォークする
まずはフォーク元のリポジトリからForkを行います。
ここでフォークを作成したいリポジトリを選択します。今回はToshimatuを選択しました。
そうするとToshimatuに自動でフォークされたリポジトリが作成されます。
(2)自分のGithubのリポジトリをローカルリポジトリにクローンする
ターミナルを開き、クローンしたい場所へ移動しgit cloneコマンドを入力します。
$ git clone https://github.com/YOUR-USERNAME/Spoon-Knife
$ 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.
(3)ローカルで編集を行い、フォークしたリポジトリへ変更をアップロードする
(4)自身のリポジトリからフォーク元リポジトリを対象にプルリクエストを作成する
初回以降、フォーク元のリポジトリの最新版に追従する方法
(1)オリジナルのリポジトリのURLをupstreamとして登録する。
すでに自身のフォークリポジトリのURLはoriginで追加されているので、追加でupstreamにフォーク元のURLを登録するという感じです。
$ git remote add upstream https://github.com/octocat/Spoon-Knife.git
登録されているURLを確認するには下記コマンドを使用します。
$ git remote -v
(2)フォーク元のリポジトリの変更を取り出す(fetchする)
$ git fetch upstream
(3)フォーク元のリポジトリの変更を取り出す(mergeする)
カレントブランチをmasterに変更してから、upstream/masterをmergeします。
$ git merge upstream/master
これでフォーク元のリポジトリの最新の状態をローカルに反映させることができました!