masterが更新された場合に、トピックブランチにその分を取り込んで作業する方法

特定のコミットの内容を再編集するためにgit rebase -iを使っていましたが、ただrebaseがどういうものなのかは知りませんでした。次のような状況で使うといい教えてもらったのでシェアします。rebaseが何に使うのかわからない方には役立ちます。

やりたいこと
トピックブランチで作業していたら、masterが更新されていた。この新しい更新分を自分のトピックブランチに取り込みたい

# リモートにないブランチがあったらローカルから削除
$ git fetch -p

# masterを更新
$ git checkout master
$ git pull

# 新しいmasterの更新分を取り込んでtopic_branchを再構成
$ git checkout topic_branch
$ git rebase master

# プルリクエストを出す場合は必要ない
$ git checkout master
$ git merge topic_branch

これでコミットが時系列に沿って再構成されます。新しいmasterのコミット以降にあるtopic_branchのコミットは新しいコミットになりますので、コミット日時とidが変わります。

gitではコミットに2つの日時を所持しています。これによりコミットの日時が変わっても、author dateというので本来のコミット日時がわかります。

今回のrebaseの使い方はOSSに参加する際には必要になるとのことです。