GIT Merge と Rebase の主な違いは、Rebase は GIT Merge よりもずっときれいなプロジェクト履歴を提供することです。
GIT は一般的なバージョン管理システムです。
開発者が一緒に作業し、作業履歴を維持することができます。
さらに、Gitではブランチを簡単に実行することができます。
ブランチは、新しい機能を作成するために使用されます。
その機能が完成したら、開発者はそのブランチをmasterブランチにマージしたり、そのブランチを削除したりすることができる。
さらに、コミットを実行すると、HEAD が最新のコミットで更新されます。
全体として、GITマージとリベースは、あるブランチから別のブランチへの変更を統合するのに役立ちます。
GITマージとは
開発者は以下のコマンドで master ブランチを feature ブランチにマージすることができます。
feature ブランチに新しい “マージコミット” が作成されます。
また、両方のブランチの履歴をつなげます。
git checkout feature
git merge master
また、以下のようなコマンドを使うことも可能です。
git merge feature master(ギット・マージ・フィーチャー・マスター
このコマンドは、非破壊的な操作を行います。
既存のブランチを変更することはありません。
一方、master がアクティブである場合、feature ブランチの履歴に影響を与える可能性があります。
git log オプションは、この問題を軽減するのに役立ちます。
しかし、他の開発者がプロジェクトの歴史を理解するのが難しくなる可能性があります。
Rebaseとは
開発者は rebase を使って feature ブランチを master ブランチにマージすることができます。
コマンドは次のとおりです。
git checkout feature (機能チェックアウト)
git rebase master
これらのコマンドは、feature ブランチ全体を master ブランチの先端から始めるように移動させます。
master にあるすべての新しいコミットを取り込みます。
さらに、Rebase はプロジェクトの歴史を書き換えます。
元のブランチの各コミットに対して、まったく新しいコミットを作成するのです。
Rebase は不要なコミットを排除します。
そのため、よりクリーンなプロジェクト履歴を提供することができます。
言い換えれば、直線的なプロジェクト履歴を維持することができるのです。
開発者は、機能の先端をたどり、フォークなしでプロジェクトの最初に行くことができます。
さらに、git log や gitk などのコマンドを使って、プロジェクト内を移動するのも簡単です。
しかし、開発者は上流の変更がいつその機能に組み込まれたかを見ることができません。
GIT マージとリベースの違い
定義
GIT Mergeは、git branchで作成された独立した開発ラインを1つのブランチに統合するためのGITコマンドです。
一方、Rebase は一連のコミットを新しいベースコミットに移動または結合する GIT コマンドで、機能分岐のワークフローを簡単に可視化することができます。
このように、GIT MergeとRebaseの主な違いはこの点にあります。
プロジェクトの歴史
さらに、Rebase は GIT Merge よりもきれいなプロジェクト履歴を提供します。
ナビゲーション
さらに、GIT Merge と Rebase のもうひとつの違いは、GIT Merge よりも Rebase の方がプロジェクト内のナビゲーションがしやすいということです。
コンテキスト
GIT Merge では、開発者は上流の変更がいつフィーチャーに組み込まれたかを見ることができます。
一方、Rebase では、開発者は上流の変更がいつそのフィーチャーに組み込まれたかを見ることができない。
したがって、この点もGIT MergeとRebaseの違いと言えます。
結論
簡単に言うと、GIT Merge と Rebase はどちらもあるブランチの変更を別のブランチに統合するためのコマンドです。
GIT Merge と Rebase の主な違いは、Rebase の方が GIT Merge よりもプロジェクトの履歴がきれいに残っていることです。