フォークしたリポジトリを最新化したい
GitHubでOSSに参加する時、
- GitHub上の対象のOSSのリポジトリをフォークしリモートリポジトリを作成
- GitHub上のリモートリポジトリをローカルにクローン
- ブランチを切って修正して commit
- リモートリポジトリへ push してプルリク
のような流れを踏むと思います。
ただ、自分が修正を進めている間にも、フォーク元のオリジナルのリポジトリでは開発が進んでいます。
プルリクがコンフリクトしないように4.の前にオリジナルのリポジトリの開発差分をマージする必要があります。
その方法を調べたのでメモします。
方法
# ローカルのリポジトリに移動
$ cd ローカルのリポジトリのパス
# GitHubのフォーク元のリポジトリをリモートブランチに追加する
$ git remote add upstream https://github.com/フォーク元オーナー名/フォーク元リポジトリ名.git
# リモートブランチの一覧を確認するとのフォーク元のリポジトリが追加されている
git remote -v
> origin ...
> origin ...
> upstream https://github.com/フォーク元オーナー名/フォーク元リポジトリ名.git (fetch)
> upstream https://github.com/フォーク元オーナー名/フォーク元リポジトリ名.git (push)
# フォーク元の master ブランチの変更差分をフェッチます。
# ※upstream/master に保管されます
$ git fetch upstream
# masterブランチをチェックアウトしフォーク元の差分をマージします。
$ git checkout master
$ git merge upstream/master
# 最後に自分の修正ブランチに master ブランチを取り込みます。コンフリクトが出たら解決します。
$ git checkout 自分の修正ブランチ
$ git merge master
上記でフォークしたリポジトリを最新化し修正差分も自分のブランチに取り込めたのでコンフリクトなくプルリクを送ることができます。
参考
フォークにリモートを設定する
https://docs.github.com/ja/github/collaborating-with-issues-and-pull-requests/configuring-a-remote-for-a-fork
フォークを同期する
https://docs.github.com/ja/github/collaborating-with-issues-and-pull-requests/syncing-a-fork