ブランチのマージ
メニューを表示するにはスワイプしてください
ブランチマージの理解
Gitにおけるマージは、あるブランチの変更を別のブランチに統合するプロセス。最も一般的なケースは、featureブランチをmainブランチ(例:main または master)にマージすること。これにより、最新の機能やバグ修正がメインのコードベースに取り込まれる。
基本的なマージワークフロー
まず、直近2つのコミットを確認。
現在は feature/new-feature ブランチ上にいる状態。
ご覧のとおり、master ブランチはコミットが1つ遅れています。
マージする前に、変更を統合するブランチに切り替える必要があります。
master ブランチに切り替え、直近2つのコミットを表示します:
master ブランチは実際に feature ブランチより1つコミットが遅れています。
これらをマージするには、git merge コマンドを使用し、現在のブランチにマージしたいブランチを指定します。
例えば、feature/new-feature ブランチを master にマージするには、次のコマンドを実行します:
コマンド実行後に表示されるメッセージには、Fast-forward が含まれています。これは、fast-forward マージが実行されたことを示します。
この章の後半で、2種類のマージについて詳しく説明します。 その前に、直近2つのコミットを確認します。
現在も master ブランチ上にあり、feature ブランチと同期され、両方のブランチが同じコミットを指しています。
HEAD は依然として master ブランチを指しています。これはマージ操作時にこのブランチ上にいたためです。
マージの種類
Git には 2 種類のマージ操作が存在。
- ファストフォワードマージ
- スリ―ウェイマージ
ファストフォワードマージ
実行したマージは、メッセージにも示されている通り ファストフォワード マージ。 このタイプは、現在チェックアウトしているブランチのすべてのコミットが、マージ対象のブランチにも存在し、コミット履歴が分岐していない場合に発生。
以下の図を参照。
このマージタイプでは、チェックアウト中のブランチのポインタが単純に最新コミットへ更新される。
スリ―ウェイマージ
しかし、ブランチの履歴が分岐しており、共通のコミット以降にそれぞれのブランチで新しいコミットが作成された場合、スリ―ウェイマージが実行される。
「スリ―ウェイ」とは、マージに関与する3つのバージョンを指す:
- 最新の共通祖先(コミット)のバージョン
- 現在のブランチ(HEAD)の最新コミットのバージョン
- マージ対象ブランチの最新コミットのバージョン
このタイプのマージの図を参照。
3-wayマージの仕組みは以下の通り:
- Gitは最新の共通の祖先以降に各ブランチで行われた変更を特定する;
- 各ブランチが異なるファイルや同じファイルの異なる部分に変更を加えている場合、Gitはそれらの変更を自動的に統合し、結果のコミットにまとめる;
- それ以外の場合はマージコンフリクトが発生する。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください