Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ ブランチのマージ | Gitにおけるブランチの操作
Gitの基礎

bookブランチのマージ

メニューを表示するにはスワイプしてください

ブランチマージの理解

Gitにおけるマージは、あるブランチの変更を別のブランチに統合するプロセス。最も一般的なケースは、featureブランチをmainブランチ(例:main または master)にマージすること。これにより、最新の機能やバグ修正がメインのコードベースに取り込まれる。

基本的なマージワークフロー

まず、直近2つのコミットを確認。 現在は feature/new-feature ブランチ上にいる状態。

featureブランチ上の最新2つのコミット

ご覧のとおり、master ブランチはコミットが1つ遅れています。 マージする前に、変更を統合するブランチに切り替える必要があります。 master ブランチに切り替え、直近2つのコミットを表示します:

masterブランチへのチェックアウトと最新2件のコミット表示

master ブランチは実際に feature ブランチより1つコミットが遅れています。 これらをマージするには、git merge コマンドを使用し、現在のブランチにマージしたいブランチを指定します。 例えば、feature/new-feature ブランチを master にマージするには、次のコマンドを実行します:

マージ
Note
注意

コマンド実行後に表示されるメッセージには、Fast-forward が含まれています。これは、fast-forward マージが実行されたことを示します。

この章の後半で、2種類のマージについて詳しく説明します。 その前に、直近2つのコミットを確認します。

マージ後の最新2つのコミット

現在も master ブランチ上にあり、feature ブランチと同期され、両方のブランチが同じコミットを指しています。

Note
注意

HEAD は依然として master ブランチを指しています。これはマージ操作時にこのブランチ上にいたためです。

マージの種類

Git には 2 種類のマージ操作が存在。

  • ファストフォワードマージ
  • スリ―ウェイマージ

ファストフォワードマージ

実行したマージは、メッセージにも示されている通り ファストフォワード マージ。 このタイプは、現在チェックアウトしているブランチのすべてのコミットが、マージ対象のブランチにも存在し、コミット履歴が分岐していない場合に発生。

以下の図を参照。

このマージタイプでは、チェックアウト中のブランチのポインタが単純に最新コミットへ更新される。

スリ―ウェイマージ

しかし、ブランチの履歴が分岐しており、共通のコミット以降にそれぞれのブランチで新しいコミットが作成された場合、スリ―ウェイマージが実行される。

「スリ―ウェイ」とは、マージに関与する3つのバージョンを指す:

  • 最新の共通祖先(コミット)のバージョン
  • 現在のブランチ(HEAD)の最新コミットのバージョン
  • マージ対象ブランチの最新コミットのバージョン

このタイプのマージの図を参照。

3-wayマージの仕組みは以下の通り:

  1. Gitは最新の共通の祖先以降に各ブランチで行われた変更を特定する;
  2. 各ブランチが異なるファイルや同じファイルの異なる部分に変更を加えている場合、Gitはそれらの変更を自動的に統合し、結果のコミットにまとめる;
  3. それ以外の場合はマージコンフリクトが発生する。
question mark

すべてのマージの種類を選択してください。

すべての正しい答えを選択

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  4

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 4.  4
some-alt