##この記事で言いたいこと
git rebase masterで、現在のブランチのコミットをすべてmasterに適応できる。
コミットを一つずつ適応するため、一度に解決すべき競合が少なくなる。
また、履歴が一本化できるため後から見直したときにわかりやすい履歴になる。
##ブランチがこんがらがる
複数のブランチを切って作業していると、
マージがあちらこちらで行われるため、入り組んで見にくくなります。
こういう時に役立つのが、git rebase です。
##git rebase
このコマンドは、現在のブランチと指定したブランチとが分岐し始めたコミットを探し、
そこから現在までのすべてのコミットを、指定したブランチの最新の状態に適応し直します。
##例
例をあげると、
Masterのコミットm1 m2 m3 m4があるとします。
さらに、m2から派生したbranch_Aのm2-a1 m2-a2 m2-a3と、
m2-a1から派生したbranch_Bののm2-a1-b1 m2-a1-b2があるとします。
このようなときに、branch_Bをチェックアウトしてる状態でgit rebase masterをすることで、
m4の後にm2-a1、m2-a1-b1、m2-a1-b2を順番にもう一度コミットを行います。
##競合解決
途中で競合が起きた場合はそこでいったん停止するため、
競合を解決し、git addしてからgit rebase --continueを実行してください。
また、git rebase --abortコマンドを実行することで、いつでもrebaseを終了できます。
##まとめ
このように手順自体は少々複雑になりますが、
rebase後の履歴が一本化されるため後からとてもわかりやすくなります。
また、rebaseしたブランチとのマージは基本的にfast-forwardマージになるため、マージそのものがとても楽になります。
なお、git rebaseにはほかにも強力な使い方がありますので、次の記事を待つかgit rebase -iあたりでググってください。