Menu
Coddy logo textTech

3-way マージ

CoddyのTerminalジャーニー「バージョン管理」セクションの一部 — レッスン 36/58。

両方のブランチが独立して進んでいる場合、Gitは単にファストフォワード(早送り)することはできません。その代わりに、3方向マージ(three-way merge)を実行します。共通の祖先と2つのブランチの先端を確認し、それらを結合した新しいコミットを作成します。

この新しいコミットはマージコミットです。これには、それぞれのブランチから1つずつ、計2つの親があります:

git switch main
git merge feature -m "Merge feature"

-m フラグはマージコミットメッセージを直接指定するため、Git はエディタを開きません。

ほとんどの場合、Gitは、ファイルの異なる部分に手が加えられている限り、両方のブランチからの変更を自動的に統合できます。コンフリクト(衝突)は、両方のブランチが同じ行を変更した場合にのみ発生します。これは次のレッスンのトピックです。

challenge icon

チャレンジ

中級

top.txt (内容: a) と bottom.txt (内容: b) が含まれている新しいフォルダから開始します。

リポジトリを初期化し、最初のコミットを作成してから、以下の操作を行ってください:

  1. feature ブランチを作成し、top.txtadded という行を追記してコミットします。
  2. main ブランチに切り替え、bottom.txtadded という行を追記してコミットします。
  3. Merge feature というメッセージで featuremain にマージします。

git rev-list --count HEAD を使用して、HEAD から到達可能なコミット数を出力してください。期待されるカウントは 4 (initial + feature + main + merge) です。

チートシート

両方のブランチが分岐している場合、Gitは3方向マージ (three-way merge)を実行し、2つの親を持つ新しいマージコミットを作成します:

git switch main
git merge feature -m "Merge feature"

-mフラグは、エディタを開かずにマージコミットメッセージを設定します。両方のブランチが異なる行を変更している限り、Gitは自動的にマージを行います。

自分で試してみよう

ターミナル
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

バージョン管理のすべてのレッスン