経緯
チームのメンバーに「少し前にマージした時にコンフリクトしたファイル一覧を知りたい」と質問された時に、僕は「どうやったら良いんやろ、、、」と思いました。そこで調べている中でマージログの見方を初めて知ったので記事にしようと思います。
解決方法はあの頃のコンフリクトをもう一度起こしてコンフリクトしたファイル一覧を調べました。
手順
- マージコミットを特定する
- マージ前の親ブランチと作業ブランチを作成する
親ブランチ: 取り込むブランチ
作業ブランチ: 今いるブランチ
マージコミットを特定する
# マージログ一覧表示
git log --merges
# ログをワンラインで表示する
git log --oneline
どちらかのコマンドを流して、コミットを特定します。
あの頃マージした時、マージコマンドで--no-ff
オプションをつけていない場合はマージコミットが残らないです。
–no-ff オプションを付け忘れたマージをやり直す方法
https://oki2a24.com/2016/02/18/redo-git-merge-with-no-ff/
マージ前の親ブランチと作業ブランチを作成する
# 特定したマージコミット
commit cccccccccccccccccccccccccccccc
Merge: aaaaaaaa bbbbbbbb
Author: qiita.taro <mail adoress>
Date: Wed Aug 10 13:30:59 2022 +0900
コミットメッセージ
マージログの2つのコミットIDは以下のコミットです。
aaaaaaaa: 親ブランチのマージ前の最新コミットID
bbbbbbbb: 作業ブランチのマージ前の最新ミットID
これよりマージ前のブランチを作成します。
# あの頃のブラントを作成
git chechout -b [作成するブランチ名] [コミットID]
# マージ前の作業ブランチを作成
git checkout -b old_working_branch bbbbbbbb
# マージ前の親ブランチを作成
git checkout -b old_parent_branch aaaaaaaa
作成後もう一度マージするとあの頃と同じコンフリクトが起きるので、ファイル一覧やコンフリクトの内容が確認できます。
最後に
このやり方以外でいい方法があればぜひコメントお願いします。