git rebaseの使い方を勉強してみた

git rebase プログラミング

※当ブログでは商品・サービスのリンク先にプロモーションを含みます。ご了承ください。

私は今までmainブランチの取り込みはずっとgit mergeを使ってきました。こっちの方がかんたんだからです・・

でも本当はgit rebaseのがいいんだよな・・と心の隅で思っていたので、これを機会に勉強してみました。

でもgit rebase難しそう・・

git rebaseとは

merge commitを作らずに、ブランチを統合するやり方です。

mergeとrebaseの比較

merge

上記の記事で紹介した、3-way mergeを例にとってみます。

以下では、testブランチをmainに統合したいと思った場合、mergeを使うと、C5というmerge commitが生成されます。

3way merge

rebase

一方で、git rebaseを使うと、以下のようになります。

いかがでしょうか?

mergerebaseを比べてみると、動き方はだいぶ違いますが、C5C4'の中身は一緒になります。

つまり、Historyだけが違いとしてあります。

どちらがいいのか?

公式ドキュメント(Rebase vs Merge)にもありますが、用途によって使い分けてくださいとのことでした。

実際に公式ドキュメントにあるサンプル(More Interesting Rebases)をやってみたりしたのですが、違いとしては、merge commitが作成されないので、Historyが綺麗という点です。

例えば、こちらは手元でいろいろ実験していた際のスクショです。

86d9: c1から上は公式ドキュメントにあるサンプル(More Interesting Rebases)を手元で再現したもので、rebaseを使っています。
見てわかるように1列で綺麗ですよね。

一方で、8286: fix: midoriからc159: Merge branchまではmergeを使いました。c159merge commitですね。よく図で紹介するように分岐しています。

見方によるのかもしれませんが、一般的にrebaseのがよいとされています。たしかにmerge commitというコミットが入ってくるのでHistoryがごちゃっとした印象に見えちゃうのかもしれないです。

まとめ

Historyに関して今まで何も気にしていなかったので、今後rebaseを使っていこうかなと思いました。

mergeはかんたんで便利なんですが・・自分自身ステップアップしなくてはいけないので・・!

にほんブログ村に参加しております!よろしければクリックお願いします 🙂

にほんブログ村 IT技術ブログへ
にほんブログ村

コメント

タイトルとURLをコピーしました