「gitのconflict解消で余計なファイルを修正していないか確認する方法」に関しての考えをまとめました。

目次

作業ブランチにdevelopを取り込む必要があった。この作業ブランチは複数人で作業しているため、rebsaeではなくmergeを使用する必要がある。

このときに競合が発生してしまった。解決自体は容易だったけれども、ある懸念点が生まれた。「コンフリクトを解消した結果、余計なところを修正ていないのだろうか」「修正が問題なかったことを確認するすべはないのか」と。

調べた結果をまとめる

git diffを使う

結論として、git diff を使うことで解決できる。このコマンドは2つのコミットをIDを引数に指定することで、差分を比較することができる。それに加えて、ブランチ名を指定することで、2ブランチの差分も確認できる。


git diff develop..feature/BRANCH_NAME

これで差分を比較できる。ファイルを比較する場合は--name-onlyオプションを指定するとよい。

git branch
develop
* feature/BRANCH

git diff develop..HEAD --name-only
composer.json
composer.lock
...中略

HEADを使う

さらにシンプルにするためには、git側が用意しているHEADを使用するとよい。

git diff develop..HEAD --name-only

この変数は、現在のブランチのポインタが情報が指定されている。COMMIT IDやブランチ名なのかと思っていたがそういうわけではないようだ。

例えば、特定のオブジェクトの中身を取得するcat-fileも使用できる

git cat-file -p HEAD // 最新コミットを取得できる

.git/HEADを確認すると、refsとしてブランチ名が保存されていた。直接ファイル名の中身をそのまま表示するわけではなさそうだ

ref: refs/heads/feature/TICKET_001

チルダの使いかた

HEADにチルダを付けると、nつ前のコミットにポインタを指定できる

HEAD~2

https://masuyama13.hatenablog.com/entry/2020/08/21/231120

余談

最初に試していたのは、以下の手順

git checkout develop
git merge feature/TICKET_001 --no-commit
//git graphなどのGUIで確認
git reset --hard

これでもよいけど、一回mergeをはさむ必要があり、もっと手軽な方法がないかと思っていたところだった。 見つけてよかった!