【Git】履歴の早送り「ファーストフォワード」

現在のブランチの編集履歴が別のブランチに全て含まれている状態で
そのブランチの編集履歴を適用するためには
ファーストフォワード」という特殊なマージまたはリベースを行います。

この操作を行うと、ログの形を変えず
ブランチの先頭コミットを指し示す位置を
別のブランチの先頭コミットまで移動することで
別ブランチの編集履歴を適用できます。

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

ストーリー

ビジネスオーナー A さんと Web ディレクター B さん
ビジネスオーナー A さんと Web ディレクター B さん

前回までのあらすじ
ビジネスオーナーの A さんは出店先の街を決めたので
ホームページに都市名を追加する変更を行いました。

ホームページの変更を終えた A さんは、
いっしょに制作している Web ディレクターの B さんに
次の更新内容の相談をするため、
変更作業をプッシュして
B さんに最新版を確認してもらうことにしました。

現在の A さんと B さんの状態を確認しよう

現在、 A さんのローカルリポジトリーは以下のようになっています。

A さんのローカルリポジトリーのログ
A さんのローカルリポジトリーのログ

そして、 HTML ファイルをブラウザーで表示すると
以下のようになっています。

ブラウザでの表示  都市名とキャッチコピーの追加
ブラウザでの表示 都市名とキャッチコピーの追加

一方、B さんのローカルリポジトリーは以下のようになっています。

B さんのローカルリポジトリーのログ
B さんのローカルリポジトリーのログ

そして、 HTML ファイルをブラウザーで表示すると
以下のようになっています。

ブラウザでの表示 キャッチコピーの追加
ブラウザでの表示 キャッチコピーの追加

つまり、
B さんの作業用フォルダーでは A さんの行った「都市名の追加」の作業が
まだ適用されていません。

A さんの編集履歴をフェッチしよう

手順

1. A さんの作業用フォルダーでプッシュします
2. B さんの作業用フォルダーでフェッチします

ここで B さんのローカルリポジトリーのログを見ると
以下のようになっています。

B さんのローカルリポジトリーのログ
B さんのローカルリポジトリーのログ

この時点でも、
B さんの作業用フォルダーでは A さんの行った「都市名の追加」の作業が
まだ適用されていません。

ブラウザでの表示 キャッチコピーの追加
ブラウザでの表示 キャッチコピーの追加

ここで編集履歴を適用するためには、マージもしくはリベースを行います。

マージ / リベースしよう

マージとリベースどちらを行っても同じ結果となります 。
ここではリベースを行った場合を説明します。

手順

1. 「origin/master」を右クリック → [Rebase “master” onto this]
「origin/master」を右クリック → [Rebase "master" onto this]
「origin/master」を右クリック → [Rebase “master” onto this]

すると、リベース画面のボタンが
[スタート(ファーストフォワード)] に変わっています。

2. [スタート(ファーストフォワード)]ボタンをクリック
[スタート(ファーストフォワード)]ボタンをクリック
[スタート(ファーストフォワード)]ボタンをクリック
3. [終了] ボタンをクリック
[終了] ボタンをクリック
[終了] ボタンをクリック

その後、ログを確認すると、
以下のように、「master」と「origin/master」が同じ位置になっています。

「master」と「origin/master」が同じ位置になっています
「master」と「origin/master」が同じ位置になっています

HTML ファイルを確認すると、 A さんが行った変更内容が適用されています。

ブラウザでの表示 都市名とキャッチコピーの追加
ブラウザでの表示 都市名とキャッチコピーの追加

以上でプロジェクトの編集履歴の早送りが完了しました。
Git ではこのようなマージ / リベースを
ファーストフォワード」 ( fast forward ) と言います。

「コミット」「リベース」の操作を実行した結果、
「ファーストフォワード」になるので、
「ファーストフォワード」を行う専用の操作は
存在しないことに注意しましょう。

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

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