以前forkしたgithubリポジトリを追従させる方法


pull request を送るためにforkしたリポジトリがありました。しばらく経った後、元のリポジトリは更新が進んでいるのですが、自分のforkしたリポジトリをそれに追従させる方法がわからず、困っていたところをアドバイスをいただけて解決できたので、自分の理解を兼ねてまとめました。

リポジトリのfork

fork
pull requestを送る準備として、まずは元のリポジトリを自分用にforkします。そしてそれをローカルの作業用にgit cloneします。

修正のpull requestを送る

qullreq

ローカルのリポジトリでpull request用のブランチを作り、そこに修正分をコミットします。
それをまずgithub上の自分のリポジトリにpushし、pull requestを送ります。

リポジトリの更新

しばらく経ち、元のリポジトリでは開発が進んで、いくつかのタグも追加されています。

merge

github上の操作でmergeを行うことができます。
しかし、これだとメインブランチ以外のブランチやタグの情報は取り込まれません。
最も最近のリリースタグのところから自分の作業ブランチを作りたいので、タグが取れないのは困ります。

これの解決方法は以下の通りです。
まず自分のローカルのリポジトリにfork元をupstreamという名前でリモートリポジトリとして追加します。

$ git remote add upstream <fork元のリポジトリ>
$ git fetch upstream

これで、タグや全てのブランチを取り込むことができます。

githubの自分のリポジトリはoriginとして参照できます。そこにpushします。

$ git push origin --all
$ git push origin --tags 

fetch_and_push