0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

(調査中)web画面のマージリクエストのコミット見ると変更が取り込まれているように見えた。なぜ

Posted at

なるほど、状況を整理すると:

ブランチ間でマージを行った。

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 で確認する。

必要に応じて、マージ元とマージ先の差分を手動で再確認。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?