Skip to main content

How to diff branches in Git

Posted in Development and Git

After posting my article on rebasing versus merging in Git, I decided to do a bit of digging around git log, and it turns out it can solve the issues I was having with merging: quickly and cleanly seeing what I’ve done relative to master.

Branch diffs

We’re talking about commits here, so a git diff isn’t what we’re after – that would give us the unstaged changes in the files themselves. We want a higher-level overview of the changes we’ve already made and commmitted on a branch.

git log does more than I first thought – you can use it to view only the commits that’re different from the base branch. Very useful! This is how:

git log master..

Note: the .. isn’t a typo!

That assumes you’re currently checked out on your working branch. If you’re not, all you have to do is specify the branch immediately after the two full-stops:

git log master..working-branch-name

Ignoring merge commits

As with most Git commands, git log comes with a whole bunch of options. People do all sorts of clever stuff using the --pretty flag, but it’s so complex and fiddly that typing it all out each time would be near-impossible. That’s where aliases come in , but while I’m learning Git on the command line, I’m trying to steer away from customisation. Luckily there’s a built-in option to remove the merge commits from the log view: --no-merges.

You can also make the commit log more readable at a glance with --oneline.

So to view a nice tidy version of the log, use:

git log --oneline --no-merges

And to roll this up with our branch diff:

git log master.. --oneline --no-merges

That solves the two downsides I listed with merging. Is it a reason to go back to merging? It could be. I’m very early in my git rebase journey, so I’m going to stick it out for a bit longer.

Get them delivered!

If you enjoyed this and want all the latest articles delivered to your inbox every month, pop your email in the form below.

I don’t collect any data on when, where or if people open the emails I send them. Your email will only be used to send you newsletters and will never be passed on. You can unsubscribe at any time.

More posts

Here are a couple more posts for you to enjoy. If that's not enough, have a look at the full list.

  1. Scrollbar marker colours on macOS

    The other day, I realised the scroll markers were invisible on my website in Light Mode. The fix was pretty easy once I knew what was going on.

  2. Scroll-bounce page background colour

    In most browsers, if you scroll and hit the top or bottom of the page, there’s a bounce. Did you know you can change the colour behind your page?