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