GGPT Master GuideAIを、日々の作業に。

CodexとGitの競合を解決する

公開 2026-09-12 更新 2026-09-12

CodexとGitの競合を解決する

関連テーマ:変更を調べ、試して確かめる

Gitで別のブランチを取り込んだとき、同じ箇所の変更を自動でまとめられず、競合で止まることがあります。Codexに頼む場合も、片方を一括で採用する前に、両方が何を変えようとしているかを確認します。

この記事は、通常の git merge で起きたテキストの競合が対象です。rebaseやcherry-pickでは続行・中止の操作が異なるため、最初に何の途中かを確かめます。ブランチの基本が分かる状態から進めてください。

いま何が止まっているかを見る

作業フォルダーで次を実行すると、Gitの状態と、未解決のファイル名を確認できます。

git status
git diff --name-only --diff-filter=U
このGit作業の状態を確認してください。まだファイルを変更しません。
現在のブランチ、merge・rebaseなど何の途中か、競合したファイルを報告します。
今回より前からあった未コミット変更も分けてください。
片方を一括採用せず、各競合で双方の意図と判断に必要な情報を示してください。

自分が触った覚えのない変更があっても、Codexがすべて作ったとは限りません。開始前の作業を巻き込まないように、対象を絞ります。

各段階で確認してから、次の操作へ進みます。

図解CodexとGitの競合を解決する:進める順番
  1. 1競合の状態を調べる実行中の操作と対象ファイルを確認します。
  2. 2両方の意図を比べる記号だけを消さず、残す内容を決めます。
  3. 3解決後を検証内容と未解決一覧を確認して記録します。

具体的な依頼と、結果の確かめ方は本文にあります。

Gitの状態を調べてから内容を決め、解決後にファイルと履歴を確かめます。記号が消えたことだけでは、正しく直った証拠になりません。

記号の両側を比べる

仕事のリポジトリではなく、空の練習フォルダーで再現したい場合は、次のように準備を依頼できます。Gitを使えることと、指定したフォルダーが空であることを先に確認します。

指定した空の練習フォルダー内だけで、Gitの競合を再現する案を示してください。
notice.txtの初期内容を「Opening time: 10:00」としてmainにコミットします。
codex/alternateで11:00へ変更してコミットし、mainでは09:00へ変更してコミットします。
mainが未コミット変更なしの状態でcodex/alternateをマージし、競合したところで止めます。
既存プロジェクトやGitの共通設定は変更せず、リモートへの送信もしません。

練習用の notice.txt で、元の開始時刻10時を、一方は9時、もう一方は11時へ変更したとします。通常のマージで次のような箇所が現れます。

<<<<<<< HEAD
Opening time: 09:00
=======
Opening time: 11:00
>>>>>>> codex/alternate

これは両方の案を示す競合マーカーです。表示形式によっては元の内容も加わります。現在のブランチと取り込むブランチを確認し、「上が常に新しい」といった判断はしません。

ここで、9時は開場、11時は催しの開始と確認できたなら、次のように両方の意味を残す案があります。

Opening time: 09:00 (doors); 11:00 (event)

この意味はGitから自動で分かるものではありません。実際の要件で確認できない場合は時刻を推測せず、判断が必要な箇所として残します。

決めた内容だけを直して検証する

notice.txtでは09:00が開場、11:00が催しの開始と確認しました。
両方の意味を残す形で、この競合だけを解決してください。
競合マーカーを取り除き、ほかの文章は維持します。
変更前後の差分と最終本文を示してください。まだコミットやpushは行いません。

内容を確認したら、今回の対象だけをステージへ追加します。ステージは、次のコミットに入れる変更を選ぶ場所です。

git add -- notice.txt
git diff --cached -- notice.txt
git diff --name-only --diff-filter=U

未解決一覧が空であること、ステージに正しい内容が入ったことを確認します。コードなら該当するテスト、Webなら表示や操作も確認してから、マージをコミットします。ほかのファイルが競合中なら、まだ全体の解決ではありません。

中止するときは操作の種類を合わせる

通常のマージを取りやめる操作は git merge --abort です。ただし、マージ前から未コミット変更があった場合などは、元の状態を完全に復元できないことがあります。現状を控えてから、対象の操作と変更を確かめます。

今回は解決を進めず、マージを中止する方法を確認してください。
実行中の操作、マージ前の未コミット変更、開始後の編集を整理します。
失われる可能性がある内容を控えた上で、今回の操作に合う戻し方を示してください。
ブランチや無関係なファイルを削除しないでください。

編集環境のGit 2.53.0.windows.1で、空の練習リポジトリを用意し、競合の発生、両方の時刻、未解決一覧、中止後の復元、解決後の二つの親を持つマージ記録を確認しました。中止の試験は開始前に未コミット変更がない条件です。実プロジェクトの復旧やCodexモデルによる競合解決を保証するものではありません。

最終差分の見方は変更を確認する手順、関係する処理を探す場合は変更箇所の検索へ進めます。

このテーマを続けて読む

不具合修正、テスト、コード整理、ブランチで変更の結果を確認します。

変更を調べ、試して確かめるの記事をまとめて見る