⚙️
【Git&Github】Merge(マージ)とRebase(リベース)の違い
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