Git チュートリアル - リベース
次のような基本的なマージについて説明しました
-
早送りマージ
fast-foward merge
-
3 方向(再帰)マージ
このチュートリアルでは、Git の最も重要な機能の 1つであるリベースを紹介します。
git rebase
とは何ですか
リベース rebase
とは、ブランチのルートコミットを変更することを意味します。つまり、master
ブランチのように、ベースコミットをマージするブランチの最近のコミットにリセットします。
これがどのように見えるか見てみましょう、
この図には master
ブランチと Feature
ブランチがあり、Feature
ブランチで作業している間、他のチームメンバーは master
で作業を続けました。
ブランチを master
にマージする前にブランチをリベースし、rebase コマンドを実行すると、テストブランチのベースとなるコミットが C1
ではなく C3
ではなく変更されます。以下のグラフは、リベース後の動作を示しています。
変更をマージするとき、コミットはマスター
からの最新のコミットに基づいているため、再度早送りマージを実行するだけです。これが、リベースが git の最も強力な機能の 1つである理由です。
このリベースされた Feature
ブランチを master
にマージすると、コミットロググラフは次のようになります。
Feature
ブランチが存在したことがなく、すべてのコミットログが直線になっているようです。
リベースワークフロー
-
機能ブランチを作成する
$ git checkout -b Feature
-
このブランチを変更してコミットします
$ git add modified.txt
$ git commit -m 'coment here'
-
機能ブランチを
マスター
にリベースします
$ git rebase master
-
リベースされた機能ブランチを
マスター
にマージする
$ git checkout master
$ git merge Feature
リベースの黄金律
黄金律は、歴史の書き直しのためにあなたが公に利用可能にしたブランチをリベースしないことです。
パブリックブランチをリベースし、それらの新しい変更を master
ブランチにリベースした後、誰かがそのブランチで作業する場合、他の開発者は元の master
ブランチで作業するため、非常に困難です。