Git チュートリアル - リベース

  1. git rebase とは何ですか
  2. リベースワークフロー
  3. リベースの黄金律

次のような基本的なマージについて説明しました

  • 早送りマージ fast-foward merge

  • 3 方向(再帰)マージ

このチュートリアルでは、git の最も重要な機能の 1つであるリベースを紹介します。

git rebase とは何ですか

リベース rebase とは、ブランチのルートコミットを変更することを意味します。つまり、master ブランチのように、ベースコミットをマージするブランチの最近のコミットにリセットします。

これがどのように見えるか見てみましょう、

Git 機能ブランチ

この図には master ブランチと Feature ブランチがあり、Feature ブランチで作業している間、他のチームメンバーは master で作業を続けました。

ブランチを master にマージする前にブランチをリベースし、rebase コマンドを実行すると、テストブランチのベースとなるコミットが C1 ではなく C3 ではなく変更されます。以下のグラフは、リベース後の動作を示しています。

Git 機能ブランチ

変更をマージするとき、コミットは「マスター」からの最新のコミットに基づいているため、再度早送りマージを実行するだけです。これが、リベースが git の最も強力な機能の 1つである理由です。

このリベースされた Feature ブランチを master にマージすると、コミットロググラフは次のようになります。

リベース後の Git ロググラフ

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 ブランチで作業するため、非常に困難です。

comments powered by Disqus