「gitをmergeする前に期待通りのファイルが更新されているか見る」に関しての考えをまとめました。
目次
作業ブランチに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