gitを使用する場合、マージによってもたらされたすべてのコミットを無視して、ブランチに対して行われたコミットを表示する方法はありますか?
マージされた他のブランチで行ったコード変更を無視して、ブランチで行われたコード変更を確認しようとしています。そのような方法で差分を表示することはほぼ不可能ですが、できるようにしたいと思います。レビューする必要のあるコミットを見つけます。
回答:
--no-merges
両方の親は、gitの多くのコンテキストで同じ重みを持っています。で他の変更をマージすることに常に一貫している場合は、これで必要なものが得られることがあります。
git log --no-merges --first-parent
そうしないと、他の名前付きブランチからコミットを除外できる場合があります。
git log --no-merges ^other-branch-1 ^other-branch-2 ^other-branch-3
プリンシパルブランチにマージして戻す変更を確認する場合、最も簡単な方法は、ローカルクローンでマージを実行し、マージを公開する前に最初の親との差分を確認することです。
git cherry
そのために使用できます。アップストリームにまだマージされていないコミット、または一方のブランチにはあるがもう一方のブランチにはないコミットが見つかります。したがって、「your-branch」と「master」という名前の2つのブランチが与えられます。
git cherry -v your-branch master
パッチIDと比較したコミットのリストが表示されます。
+ c3e441bf4759d4aa698b4a413f1f03368206e82f Updated Readme
- 2a9b2f5ab1fdb9ee0a630e62ca7aebbebd77f9a7 Fixed formatting
+ e037c1d90b812af27dce6ed11d2db9454a6a74c2 Corrected spelling mistake
「-」で始まるコミットは両方のブランチに表示されるのに対し、「+」で始まるコミットはブランチでのみ使用可能であることがわかります。
別の方法として、次のものを使用できます。
git log --pretty=format:"%h %s" your-branch..master --no-merges
これは、「マスター」にまだ存在しない「あなたのブランチ」で行われたコミットのリストを表示します