⚙️

【Git&Github】Merge(マージ)とRebase(リベース)の違い

2024/07/20に公開

Merge(マージ)=結合

Rebase(リベース)=連結

(実践編)それぞれのワークフロー(前提)

(例)mainブランチからfeatureブランチを作成して新機能の開発を行っている。

A, B, Cはmainブランチのコミット、D, Eはfeatureブランチのコミット
A---B---C (main)
     \
      D---E (feature)
他開発者がmainブランチに新しい変更(F, G)を加えました:
A---B---C---F---G (main)
     \
      D---E (feature)

Merge(マージ)のワークフロー

1. マージしたいブランチへ移動

git checkout main

2. マージさせたいブランチ名を入力しマージする

git merge feature

3. マージした結果

Hという新たなマージコミットが作成され、元の履歴がそのまま保持されている。
A---B---C---F---G---H (main)
     \             /
      D-----------E (feature)

rebase(リベース)のワークフロー

1. リベースしたいブランチへ移動

git checkout feature

2. リベースさせたいブランチ名を入力しリベースする

git rebase main

3. リベースした結果

DとEのコミットが新しいベース(G)の上に再適用される。
A---B---C---F---G---D'---E' (feature)

マージやリベースされたかを確認するコマンド

以下のコマンドを用いるとブランチの管理が視覚化される
git log --graph --oneline --all

Discussion