LoginSignup
128
87

More than 3 years have passed since last update.

フォークしたリポジトリを最新化する方法

Posted at

フォークしたリポジトリを最新化したい

GitHubでOSSに参加する時、

  1. GitHub上の対象のOSSのリポジトリをフォークしリモートリポジトリを作成
  2. GitHub上のリモートリポジトリをローカルにクローン
  3. ブランチを切って修正して commit
  4. リモートリポジトリへ 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

128
87
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
128
87