ある GitHub 上のリポジトリと,それをフォークしたリポジトリが存在する状況を考える. フォーク元のリポジトリに新しいコミットがプッシュされた場合,その差分をフォークしたリポジトリに同期させたいことがある. つまり,以下の図のようなことがしたい.

Original repository
Original repository
Forked repository
Forked repository
B'
B'
Fork
Fork
A
A
A
A
Original repository
Original repository
Forked repository
Forked repository
B'
B'
Fork
Fork
New
New
A
A
B
[Not supported by viewer]
B
B
A
A

手順

  1. フォークしたリポジトリに upstream という名前でフォーク元リポジトリをリモートリポジトリとして追加し,
  2. 元のリポジトリの最新状態をフェッチできるようにし,
  3. 必要なタイミングでフォークしたリポジトリの master ブランチを upstreammaster ブランチでリベースする.
# 1.
git remote add upstream https://github.com/<original>/<repository>.git
# 2.
git fetch upstream
# 3.
git checkout master
git rebase upstream/master

リベースした状態のフォークしたリポジトリを GitHub にプッシュする際には,-f オプションをつける必要がある.

git push -f origin master