なるほど、状況を整理すると:
ブランチ間でマージを行った。
1つのプロパティファイルのみコンフリクトが発生。
TortoiseGitでコンフリクト解消したが、おそらく操作ミスでマージ先の内容が親になってしまい、マージ元の変更が取り込まれなかった。
しかし、Web上のマージリクエスト(たとえばGitHub/GitLabなど)では、コミット上は変更が入っているように「見えた」。
考えられる原因
① コンフリクト解消時の選択ミス
TortoiseGitでは、コンフリクト解消時に「マージ元を採用する」「マージ先を採用する」「両方をマージする」などの選択肢があります。
「マージ先を採用」や「Theirs」を選んでしまった場合、マージ元の変更が破棄されます。
その状態でマージコミットを作成すると、「マージコミット自体」は存在するため、Web上では変更があったように見えることがあります。
でも中身を見ると、マージ元の変更は実際には適用されていない。
② Web上の差分表示の誤解
GitのWeb UI(GitHub/GitLabなど)では、「マージ時に発生した変更差分」だけを表示する場合があります。
そのため、マージリクエスト内の「Files changed」などでは、あたかもマージ元の変更が含まれているように見える場合もありますが、
実際のブランチ(ローカルやmain)の中身にはマージ元の内容が含まれていないことがある。
③ 手動解消後の「未保存」「未ステージ」または「間違ったコミット」
TortoiseGitでマージコンフリクトを解消したあと、以下のような操作ミスが起こることもあります:
解消した内容を保存し忘れた。
保存したがステージしなかった。
ステージしたが、マージコミット時に別の内容でコミットしてしまった。
解決策・確認ポイント
最終的なマージ先ブランチ(例:main)で、当該プロパティファイルの内容を確認する。
マージコミットの内容(特に当該ファイルの差分)をローカルとWebで比較してみる。
ローカルのGitログで、以下のように確認できます:
bash
コピーする
編集する
git log -p -- <対象ファイル>
これで、マージ時にそのファイルがどう変更されたか追えます。
補足:安全な対応方法
今後似たような状況があった場合、TortoiseGitでマージする際に:
コンフリクトが出たら、「Base(共通祖先)」「Ours(現在のブランチ=マージ先)」「Theirs(マージ元)」の意味を確認しながら、丁寧にマージする。
終わったら、ローカルで git diff や git status で確認する。
必要に応じて、マージ元とマージ先の差分を手動で再確認。