akitoshiblog

よわよわエンジニアの日々の思考と学びの記録。

他人のリポジトリをフォークして、最新版を追従する方法

f:id:maserati004:20200922155523p:plain

はじめに

フォークとはリポジトリのコピーのことをいいます。 共同開発する場合に元のリポジトリに影響を与えることなく各自で開発を行えるための仕組みになっています。

一般的にフォークは、他のユーザのプロジェクトへの変更を提案するため、 あるいは他のユーザのプロジェクトを自分のアイディアの出発点として活用するために使用します。

Github Docs引用

今回はフォークを初回に行う場合と、初回以降に最新の状態を追従する方法についてまとめました。

基本的には下記の内容を参考にすれば実施できるので、この記事で全体感を掴みつつ詳細をリンク先で確認してもらえれると良いかと思います。

docs.github.com

手順

初回にフォークして、プルリクエストを作成するまで

(1)Githubにあるフォーク元リポジトリから、自分のGithubのリポジトリへフォークする

まずはフォーク元のリポジトリからForkを行います。

f:id:maserati004:20200922152712p:plain
図1 Forkボタンを押下した直後の画面

ここでフォークを作成したいリポジトリを選択します。今回はToshimatuを選択しました。

f:id:maserati004:20200922152752p:plain
図2 Forkが完了し、リモートの自身のリポジトリが作成された状態

そうすると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

これでフォーク元のリポジトリの最新の状態をローカルに反映させることができました!

参考資料

docs.github.com

qiita.com