Git rebaseとは(mergeとの違い)

目次

Gitのrebaseとmergeの違いのまとめ

目的 結果 安全性
git rebase 履歴を付け替える 履歴は直線になる
コミットIDは変わる
履歴改変あり
git merge ブランチを合流させる 履歴は分岐が残る
コミットIDは変わらない

高い

rebaseの場合

git の rebase(リベース) とは、
自分のブランチの変更履歴を、別のブランチの最新の先頭に付け替える操作 です。

rebaseを行う前

main:    A---B---C
               \
feature:        D---E

git rebase mainをすると

main:    A---B---C
                     \
feature:              D'---E'

D, E の内容は同じ

ただし、コミットIDは作り直される(D' E')

履歴が 一直線でキレイ になる

分岐した場所を、より新しい位置に引っ越しします。

rebaseを使う場面

・(重要)自分だけの作業ブランチで使用する→履歴が書き換わってしまうため

・PR前に履歴を整理したい(コミットをまとめる、メッセージ修正、不要なコミット削除)

・1機能=1履歴にしたい

mergeの場合

main:    A---B---C------M
               \      /
feature:        D---E

featureの変更をそのまま合流

M = マージコミット

いつ・どこで合流したかが分かる

mergeを使う場面

・(重要)main / developなど共有ブランチで使用する→変更履歴が残るため

・本番リリース履歴を残したい

・安全第一

関連の記事

Git checkoutとは(switch/restoreとの違い)
GitHub Pull RequestsとIssuesの違い(+Actionsとは)

△上に戻る