【Git】履歴の直列化 「リベース」

分岐した編集履歴をマージのように合流させて統合するのでなく、
まっすぐにに並べ直すことで統合するためには
リベース」という操作を行います。
この操作を行うと同時進行した制作の編集履歴を
あたかも一連の編集履歴だったかのように並べ替えることができます。

Linux 知識の要らない Git 講座 目次にもどる

編集履歴を直列化する例を見てみよう

まずログを見てみましょう。

分岐の元となる、共有している編集履歴
分岐の元となる、共有している編集履歴

「master」ブランチは、
「origin/master」ブランチと共有しているひとつの編集履歴から分岐しています。
これを、
「master」ブランチの編集履歴が「remote/master」ブランチの編集履歴の後から
変更が行われたかのように並べ替えます。

手順

1. 「origin/master」を右クリック → [“master”をここにリベース(付け替え)]
「origin/master」を右クリック → [“master”をここにリベース(付け替え)]
「origin/master」を右クリック → [“master”をここにリベース(付け替え)]
2. [リベース開始] ボタンをクリック
[リベース開始] ボタンをクリック
[リベース開始] ボタンをクリック

すると画面下のゲージが伸びていき、処理が完了すると [終了] ボタンが表示されます。

画面下のゲージが伸びていき、処理が完了すると [終了] ボタンが表示されます
画面下のゲージが伸びていき、処理が完了すると [終了] ボタンが表示されます

ログを確認してみよう

[終了] ボタンをクリックしてダイアログを閉じます。
するとログが以下のように、2つの履歴が直列化された状態になります。

リベース後のログ
リベース後のログ

リベース前後のログの比較は以下のようになります。

リベース前後のログの比較
リベース前後のログの比較

リベース後にグラフが左右反転して少し混乱しますが、
よく見ると、「都市名の追加」の編集履歴が
「origin/master」ブランチの編集履歴の後に行われたかのように
並び変わっています。

開始位置の移動
開始位置の移動

そして作業ツリーのファイルも、マージしたときのように
両方の編集が適用された状態になっているはずです。

以上でプロジェクトの編集履歴の直列化が完了しました。
Git ではこの操作を「リベース」 (rebase) と言います。

※ リベースでも競合が発生することがあります。
  その場合はマージとほぼ同様の手順で競合の解消をします。

Linux 知識の要らない Git 講座 目次にもどる

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