Tortoise Gitにおけるリベースのやり方

システム開発Tips

リベース最高っ

リベースが役に立つケースとしては
developブランチからfeatureブランチが生やされ
以下の図のように複数人による並行開発が進んでいる状態です。

develop
├─feature1(Aさん)
├─feature2(Bさん)
├─feature3(Cさん)
└─feature4(Eさん)

例えば、Eさんの改造規模が大きく、A、B、Cさんは早々に改造を終え、feature1~3がdevelopにマージされた。というようなケースでdevelopとfeature4の差分が大きくなります。
また、修正箇所が重なっていたりすると、もはやマージする人は最悪の状態です。

ここで登場するのがリベースです。
イメージ的には文字通り、リベース(元となるブランチの付け替える)です。

# 現在のブランチの状況
develop → develop(f1) → develop(f2) → develop(f3)
└─feature4
↓
# fuature4をdevelop(f3)にリベース
develop → develop(f1) → develop(f2) → develop(f3)
                        └─feature4

developから生やしいてたfeature4をfuature3がマージ済みのdevelopから生やし直す(ベースとなるブランチを付け替える)感じです。

この作業をTortoise gitで行うには
右クリックのコンテキストメニューからTortoiseGit>リベース(ブランチから付け替え)を選択します。

ダイアログが表示されるので、リベースを開始します。
file

リベースは

develop(f3)から同名の新feature4をというブランチを切り直し、
developから生やした旧feature4のコミットの内容を新feature4へマージする。

というようなイメージになります。(※注意:独自解釈)

なので以下のような感じで
旧feature4で行っていた変更(コミット1~4)をdevelop(f3)へコミットしていき、
コンフリクトが発生した場合はその都度develop(f3)かfeature4どちらを採用するか
決定していく。(または編集で対応)

すべてコミットされた時点で旧feature4の変更が反映された
ブランチベースがdevelop(f3)のfeature4が誕生します。

develop    →  develop(f3)
└─feature4     └─feature4(旧feature4のコミット1~4をマージ)
 ├─コミット1
 ├─コミット2
 ├─コミット3
 └─コミット4

いままでほぼ一人作業だったため、
リベースを活用しないでブランチ切り直して変更の差分をとって適応していくような
感じにしていましたが、
最近gitを用いたチーム開発となりdevelopの変更と自分の変更ブランチの変更の量が
相当数発生したため、即リベースするようになりました。

リベース使わないと地獄に等しいです。

参考

3.6 Git のブランチ機能 - リベース

フォローお願いします!

コメント

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