PR 投げる前に本家の変更を取り込んでおきたい。

ということが github を使っているとそれなりにある。本家 github の変更を取り込む方法を調べた。

参考:

upsteam として fork 元のリポジトリを登録してしまう

リモートリポジトリとして、オリジナルのリポジトリを upstream という名前で設定します。

$ git remote add upstream git://github.com/DQNEO/Renshu.git

以後、このリポジトリは upstream という名前で本家リポジトリを参照します。

ブランチを確認すると、以下のように remotes/upstream/master が加わったことが分かります。 出てこない場合には git fetch upstream を試した後に再度 git branch -a で確認してみてください。

$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/upstream/master

普段は origin として自分のリポジトリが登録されており、 そのリポジトリに対して pushpull を行っている。

今回の場合、端末A の remote に fork 元を upstream として加えることで、 端末A 経由で origin に upstream の変更を反映させることができるようになる。

upstream の変更を確認し、反映する

本家リポジトリの変更を取り出すためには fetch と merge の手順を取ります。

まずfetch

$ git fetch upstream
remote: Counting objects: 1, done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Unpacking objects: 100% (1/1), done.
From git://github.com/DQNEO/Renshu
 * [new branch]      develop    -> upstream/develop
 * [new branch]      master     -> upstream/master

カレントブランチを master にして、upstream/master を merge。

$ git checkout master
Already on 'master'
Your branch is up to date with 'origin/master'.

$ git merge upstream/master
Updating fe579f8..a1e70ae
Fast-forward

変更が無い場合には “Already up-to-date.” と表示されて終わりです。今回は差分があったので、コミットIDがfe579f8からa1e70aeまでの差分がmergeされました。

この他、 fork 元のブランチを持ってくることなどもできる。

git checkout -b branchA upstream/branchA