2 つのブランチ間で以前のマージ コミットを見つけるにはどうすればよいですか?
前回リリース ブランチをマスター ブランチにマージしてからのマスター ブランチの変更を確認したいと思います。最後のブランチ以降のリリース ブランチの変更を確認するには、次のように簡単です。git diff ...release
ただし、最後のマージ前のすべての変更も含まれているため、明らかにgit diff release...
機能しません。したがって、それを渡すには最後のマージのコミットIDが必要だと思いますgit diff
git log --reverse --ancestry-path `git merge-base HEAD release`.. \
--format=format:%H|head -n1
動作するようで、 で使用できますがgit diff $(...)
、非常に複雑に思えます。もっと簡単な解決策はありますか?
例
I
/ \
A1 B1
\ |
| M
| |
A2 B2
これI
が最初のコミットです。A[12]
はリリース コミットでB[12]
あり、マスター コミットです。M
以前のコミットです。この例では、最後のマージとマスターの間の変更は、B2 によって導入された変更のみです。は1をgit merge-base A2 B2
返します。の変更を含みます。したがって、問題は、一般的なより複雑なケースで M を見つけて、手動で を見つけなくても実行できるようにする方法です。A
git diff B2 A1
B1
git diff M B2
M