rebaseのススメ

gitでmasterからfeatureブランチを切って開発するときに、masterブランチのコミットログをきれいに保つためにrebaseを活用します。

masterブランチの変更をfeatureブランチに取り込む

$ git pull --rebase origin master  

git pull--rebaseオプションをつけて実行します。
通常のpullだとfetch+mergeという動きになるのですが、--rebaseをつけるとfetch+rebaseとなります。
これにより、featureブランチをmasterの最新の状態に更新しつつ、featureブランチでコミットした変更が履歴の先頭になります。

利点

  • git logでみたときにmasterのコミットとfeatureブランチのコミットが混ざらない
  • rebaseなのでマージコミットが作られない

があります。

注意点

  • rebaseをすると歴史が改変されるので、リモートにpushするときは-fオプションをつける必要がある
  • 同じブランチで複数人で開発しているときは、安易に実施せず共同開発者とよく相談する必要がある

masterブランチにマージする前に

開発をしているとtypoの修正などの微妙なコミットも積み上がっていくと思います。
マージするまえにfeatureブランチのコミットをrebaseを使ってきれいにします。

$ git rebase -i master  

-iをつけてintractiveに実行し、fixupやsquashで余計なコミットをまとめます。

まとめ

rebaseをうまく使ってコミットログをきれいに保つことによって、過去のコミットを追いやすくなったり、
ある特定の状態に戻したいというときにわかりやすいなどメリットがあります。