⚔️ 第三章:魔王との対決 (Git Merge & コンフリクト解決)

前章では、並行宇宙(Branch)で新機能を開発する方法を学びました。 feature/cart ブランチでショッピングカートを完成させ、テストも完璧に終えたら、次は**「ショッピングカート機能をメインの main 宇宙に統合(Merge)する」**という大仕事が待っています。

もしあなたと同僚が同じ行を変更していなければ、マージは一瞬で終わります。 しかし... あなたが index.html の10行目を変更し、 同僚もたまたま index.html の10行目を変更していた場合、 マージを実行するとGitは真っ赤なエラーを吐き、**Merge Conflict(マージコンフリクト)**が発生したと告げます!

恐れることはありません!コンフリクト解決はエンジニアの日常です。この章ではVibe Coding流でエレガントに解決する方法を教えます。


🤝 平和な融合:最も基本的なMerge操作

まずは「コンフリクトが発生しない」理想的なマージの流れから学びましょう。

💡 Vibe Prompt 実践1:安全なマージ標準作業手順(SOP)

自分で適当にコマンドを打つのではなく、重要なマージの際はAIにSOPを聞きましょう!

[!IMPORTANT] 以下のPromptをAIに送信してください:

"feature/cart"ブランチでショッピングカートの開発を完了し、git commitも実行しました。 このブランチのコードを"main"ブランチにマージしたいです。 安全な標準コマンド手順と、マージ完了後に"feature/cart"を削除する方法を教えてください。

🤖 AIが生成した実際の返答とコマンド:

# ステップ1:まず「受け取り側」の宇宙(メインのmain)に切り替える
git switch main

# ステップ2:マージコマンドを実行し、feature/cartの変更を取り込む
git merge feature/cart

# ステップ3:(任意)マージが問題なく完了したら、不要な開発ブランチを削除
git branch -d feature/cart

🔍 深層解説: マージの概念は「大きな魚が小さな魚を食べる」ようなものです。**まず大きな魚になる(switch mainことが重要で、それから小さな魚を食べる(merge feature/cart)**のです。順序を逆にして開発ブランチでmerge mainを実行すると、プロジェクトが大混乱に陥ります!


💥 災害発生:Merge Conflictの恐怖の記号を理解する

git mergeを実行した際、ターミナルに以下のメッセージが表示されたら: CONFLICT (content): Merge conflict in index.html Automatic merge failed; fix conflicts and then commit the result.

おめでとうございます!あなたはコンフリクトを引き当てました。 この状態でindex.htmlを開くと、コード中に謎の記号が大量に出現しています:

<<<<<<< HEAD
<button class="bg-blue-500">通常ログイン</button>
=======
<button class="bg-red-500">Googleログイン</button>
>>>>>>> feature/google-login

これはウイルスではなく、GitからのSOS信号です!

💡 Vibe Prompt 実践2:AIにコンフリクト記号の翻訳を依頼

[!IMPORTANT] 以下のPromptをAIに送信してください:

git mergeを実行したらコンフリクトが発生しました。 ファイルを開くと、<<<<<<< HEAD, =======, >>>>>>> といった奇妙な記号が見つかりました。 これらの3行の記号がそれぞれ何を意味するのか、最も分かりやすく説明してください。 そして、このテキストをどう処理すべきか教えてください。

🤖 AIの超分かりやすい解説:

これらの記号はGitが描いた「区切り線」で、両者の意見がどこで食い違っているかを示しています:

1. <<<<<<< HEAD から ======= まで:
   【現在のブランチ(通常はmain)】のコード。
   つまり元々のファイルの状態。

2. ======= から >>>>>>> feature/google-login まで:
   【マージしようとしているブランチ】のコード。

💡 あなたの任務(コンフリクト解決):
裁判官のように判断を下す必要があります。
1. 奇妙な記号(<<<<, ====, >>>>)を手動で削除。
2. どちらのコードを残すか?または両方を少し修正して残すか?
3. 保存後、git addとgit commitを再実行。

🤖 AI仲裁者:コンフリクトファイル全体をAIに任せる

両方のコードの違いが分からない場合や、双方の良いところを取り入れたい場合は、**「コンフリクト記号付きのコードをそのままAIにコピペして、きれいなコードを書き直してもらう」**のが最善策です。

💡 Vibe Prompt 実践3:AIに複雑なコンフリクト解決を依頼

[!IMPORTANT] 以下のPromptをAIに送信してください:

index.htmlでGitコンフリクトが発生しました。以下はコンフリクト記号を含むソースコードです:

<<<<<<< HEAD <div class="header">Vibe Tutorへようこそ(青テーマ)</div> ======= <div class="header" id="main-title">Vibe Tutorへようこそ - アップグレード版</div> >>>>>>> feature/new-title

このコンフリクトを解決してください。 要件:feature/new-titleのid="main-title"属性と「アップグレード版」の文字は残しつつ、HEADの「(青テーマ)」も保持したいです。 Git記号を含まない、解決後のきれいなHTMLコードを生成してください。

🤖 AIが生成した完璧な仲裁コード:

<!-- AIが両方の要件を完璧に融合し、すべての醜い記号を除去 -->
<div class="header" id="main-title">Vibe Tutorへようこそ - アップグレード版(青テーマ)</div>

🔍 深層解説: Vibe Coding時代では、波括弧やタグの中から削除すべき行を探す必要はありません。「何を保持したいか」を明確に伝えれば、AIが1秒で完璧な融合コードを生成します。このきれいなコードをVSCodeに貼り付けて保存すれば完了です!


😅 後悔薬:恐ろしいマージを中断する方法

時にはコンフリクトが多すぎて(例えば数十ファイルが同時にコンフリクト)、目がくらくらし「マージなんてやめたい!マージ前の状態に戻りたい!」と思うこともあります。

そんな時、Gitは最強の「後悔薬」を提供しています。

💡 Vibe Prompt 実践4:マージを中止して戦場から離脱

[!IMPORTANT] 以下のPromptをAIに送信してください:

git mergeを実行したら、あまりにも多くのファイルでコンフリク���が発生しました。処理したくありません。 このマージを「中止(Abort)」し、git mergeを実行する前の状態に完全に戻す方法を教えてください。 対応するコマンドを教えてください。

🤖 AIが生成した実際の返答とコマンド:

# これは無敵の後悔薬です!
# マージコンフリクト状態(まだcommitしていない)であれば、このコマンドを実行:
git merge --abort

# プロジェクトはタイムマシンに乗ったように、git mergeを実行する直前の状態に戻ります!
# すべての<<<<<< HEAD記号が一瞬で消えます。

🛠️ VSCodeの神機能

実は現代のエディタ(VSCodeやCursorなど)では、コンフリクト解決がボタン一発でできるようになっています。 VSCodeでコンフリクトファイルを開くと、<<<<< HEADの上に4つの小さなボタン(Code Lens)が表示されます:

  1. Accept Current Change(現在の変更を保持=HEAD)
  2. Accept Incoming Change(マージしてくる変更を保持)
  3. Accept Both Changes(両方の変更を保持→後でゆっくり修正)
  4. Compare Changes(両者の違いを並べて比較)

💡 Vibe Prompt 実践5:エディタテクニックを質問

[!IMPORTANT] 以下のPromptをAIに送信してください:

VSCodeでGitマージコンフリクトを処理しています。 画面に"Accept Current Change"と"Accept Incoming Change"ボタンが表示されています。 VSCodeにおいて"Current"はどちらを指す?"Incoming"は? もしボタンをクリックした後に後悔したら、どうやって元に戻せばいいですか?

🤖 AIの専門的な指導:

  • Current(現在)HEADを指し、**「マージを実行した時の宇宙(通常はmain)」**です。
  • Incoming(伝来):**「マージしようとしている並行宇宙」**を指します。
  • 間違えた場合は、Ctrl + Z(MacはCmd + Z)で即座に元に戻せます!

✅ 本章のまとめとデバッグ心得

この章を学んだ後は、Gitマージコンフリクトに遭遇しても興奮すべきで、恐怖を感じる必要はありません!

  1. SOP:必ずまずmainに切り替えてから、他人のブランチをmergeする。
  2. 記号理解HEADが元のコード、もう一方が新しくマージしてくるコード。
  3. 究極の解決法:コンフリクト部分全体をAIにコピペし、保持したいロジックを伝えてきれいなコードを受け取る。
  4. 撤退戦略:失敗したらgit merge --abortで一発タイムリセット。

ブランチ開発とコンフリクト解決をマスターしたあなたのローカル開発スキルは完璧です。 次は、あなたの作品を全世界に公開しましょう! 次章:第四章:無料公開!GitHub Pagesデプロイ秘伝では、完成したコードをクラウドにアップロードし、無料で実際のウェブサイトURLにする方法を教えます!

完全なチュートリアルをロック解除

このチャプターは有料コンテンツです。プロジェクトに参加して、10以上の神レベルのPromptや実際のソースコード例を含む、5000字以上の深い分析をロック解除してください!