第09回: mergeとconflict解決の入口 — 分けた作業を戻すときに何が起こるのか

章: 第3章: 実務で詰まりやすい分岐と共有

ブランチを分けたら、最後は戻す必要がある

ブランチは作業を分けるための仕組みですが、分けたままだと本流には反映されません。

そこで使うのが merge です。

merge は、別ブランチの変更を現在のブランチへ取り込む操作です。

基本的な流れ

たとえば main に作業結果を戻すなら、次のような流れになります。


git switch main
git merge feature/login-validation

これで、作業ブランチの内容が main に取り込まれます。

変更箇所が重なっていなければ、そのままスムーズに終わることが多いです。

コンフリクトは「Gitが自動で決められない状態」

問題になるのは、同じ行付近を別ブランチでそれぞれ変更していた場合です。

このときGitは、どちらを採用すべきか自動判断できず、コンフリクト になります。

コンフリクトは失敗ではありません。むしろ「人間の判断が必要」と正直に止まってくれている状態です。

まずやること

コンフリクトしたら慌ててコマンドを打つより、まず対象ファイルを開いて内容を確認します。

典型的には次のような印が入ります。


<<<<<<< HEAD
現在ブランチの内容
=======
取り込み側ブランチの内容
>>>>>>> feature/login-validation

この印を見ながら、どちらを残すか、あるいは両方を統合するかを決めます。

実務で大切な姿勢

コンフリクト解消で大事なのは、機械的に片方を選ばないことです。

  • どちらが新しい意図なのか
  • 片方だけ残して問題ないか
  • 両方の修正を統合すべきか

を見て判断する必要があります。

チェックポイント: コンフリクトは「壊れた」ではなく「判断待ち」です。まず落ち着いて差分を読みましょう。

まとめ & 次のステップ

  • merge は別ブランチの変更を現在ブランチに取り込む操作
  • 同じ箇所の変更が重なるとコンフリクトが起きる
  • コンフリクトはGitが自動判断できない状態
  • 解消時は片方を機械的に選ばず意図を読む
  • まずは流れを理解することが重要

次回は pushpull を扱います。 ローカルで作った履歴をリモートとどうやり取りするかを最後に整理します。

Related Articles