In a previous post I showed how to compare branches with
git log master..topic. This method is great, but it only shows commits in
topic not yet in
master based on a sha1 comparison. If we have another branch called
shared that has been merged into
git log master..topic would show the commits that were merged from
shared even though they have been merged into
master. If we use
git cherry -v topic master or
git log --cherry master..topic, the actual diffs from each commit will be compared instead of only the sha1. This will make sure the commits from
shared will not show up. Here is an example.
Notice how the commit
Merge branch 'shared' into topic doesn’t really need to show up as part of
topic when comparing to
master also has that merge.
--cherry compares the diff of the merge so that it’s not included in the command
git log --oneline --cherry master..topic. This would also ignore shared cherry picked commits.