注目キーワード

git rebaseは、ずっと放置されていたブランチにmasterの内容を反映させるに大変便利なコマンドだった

やっとrebaseコマンドの使いみちが理解できたのでメモ。

 

rebaseコマンドは、放置していたtopicブランチに、(開発が進んだ)masterブランチの内容を反映させるときに便利だった。

 

 

rebaseコマンドの解説

 

rebaseについてgit本家のサイトには、以下のように書いてあります。

git-rebase – Reapply commits on top of another base tip

 

日本語に翻訳すると

「他のブランチのトップの上に、現在のブランチのコミット内容を再適用する」

 

以下のように開発が進んでいるとします。

 

              A---B---C topic
             /
    D---E---F---G master

 

topicブランチの開発と共にmaster側も進んでいます。

 

topicブランチの開発が止まり1年経ったとします。1年後、topicブランチの開発を再開したときmasterブランチとの差が開いた状態になります。そんなとき、最新のmasterブランチの内容から開発を進めたいと思います。

そんなときに役立つのがrebaseコマンドです。

 

■rebaseコマンド

git checkout topic

git rebase master

 

                          A'--B'--C' topic
                          /
    D---E---F---G master

 

成功すると上記のような履歴になります。

ポイントは、最新のmasterからtopicの履歴が作られていることです。その結果、履歴が綺麗になります。

 

■もしマージで対処したら・・・

マージすると、以下のような履歴なりmasterの中にtopicブランチの内容が反映されているようになり、どこがtopicブランチの内容なのか分かりづらくなってしまいます。

 

D—E—F–A’–B’–C’—G master(その中のどこかにtopicブランチの内容がある)

 

 

リベース作業をするときに知っておくべきコマンド

 

■git rebase –continue

rebase中、競合が発生したら、修正します。修正したら、continueすることによりrebase作業を続行します。

 

■git rebase –abort

rebase作業を止めて、rebase前の状態に戻ります。

 

まとめ

rebaseコマンドは、放置していたtopicブランチに、(開発が進んだ)masterブランチの内容を反映させるときに便利です。その理由は履歴が綺麗になり、管理が楽になるらです。

 

rebaseは、使い方と間違えると、チーム間で競合発生して厄介なことになりますが、使いこなせると開発が楽になるので知ってべきコマンドです。