git rebaseとは
Git には、ブランチを統合するための方法がmergeとrebaseの2つあります。rebaseは、作業が完了したブランチを分岐元のブランチにくっつける時に使う機能です。mergeとの違いも含めて、rebaseについて解説していきます。
リベースを使うと何がいい?
ずばり、コミット履歴が綺麗になることです!!
より具体的には、
- コミット履歴が一直線になってわかりやすくなる
- 複数のコミットを一つに統合できる
などといったメリットがあります。
リベースはコミットが一直線になる
今、branchAとbranchBという2つのブランチがあるとします。
マージの場合
まずはmergeを使って、branchBへbranchAを取り込む場合を見ておきましょう。
git checkout branchB
git merge branchA
マージだとコミット履歴が枝分かれした後、合流するといった形になり、一直線にはなりません。
リベースの場合
では、branchBをbranchAにリベースしてみます。
git checkout branchB
git rebase branchA
同じ内容の別コミットC'、D'が指定したブランチの先から作られることで、一直線になります。
リベースは複数のコミットを1つのコミットにまとめられる
今、4つのコミットABCDを持つbranchがあるとします。
これら4つのコミットはそれぞれが微修正であるため、ひとまとめにしたいです。
そんなときは、rebaseの「-i」オプションを利用するといいです。
git checkout branch
git rebase -i startのcommitID(or commit名)
「新規コミットE」として、指定した複数のコミットをまとめられました。
リベースの注意点
綺麗で見やすいコミット履歴を作成するのに、とっても役立つリベースですが、注意点もございます。
それは、rebaseコマンドは処理を作り直してしまうため、既存のコミットへ影響を与えてしまうことです。
安易に使用すると、誰かのコミットを勝手に作り直すことになり、チームに混乱を招くことに繋がります。
pushして誰かの目に触れた処理や、他の人の手の入っている箇所では、rebaseでなくmergeを使用するようにしましょう。
そして、誰にも影響を与えないローカルの開発内容のみ、rebaseを使用するようにするといいと思います。