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