Graham McGregor
Back to Writing

Git Branch Housekeeping

We're going to look at how the handy git branch -v can help us to look for outdated / deleted branches in a git repository.

To find out what the latest state of the remote is, including any branches that have been deleted, we'll run git fetch --prune. The --prune flag is what checks for deleted branches.

The next command we need is git branch, by default it returns a list of branch names.

$ git branch
* master
  release/1.2.0
  release/1.3.0

Adding --verbose (or -v) helps us out a bit more with:

  • An abbreviated commit SHA of where the branch is
  • How far ahead / behind the branch is compared to the remote branch it's tracking.
  • The commit message summary
$ git branch -v
* master        c8ff1bf [ahead 1, behind 17] Update README
  release/1.2.0 ebeb74f [gone] Version bump to 1.3.0
  release/1.3.0 32d9cb2 [ahead 1] Version bump for 1.3.0

Here we can see here that our master branch is out of date, the release/1.2.0 branch is gone which means it has been deleted on the remote, and we have a change locally on the release/1.3.0 branch that hasn't been pushed to the remote yet.

If we working with multiple remotes, such as our own fork, and an upstream repo we can get more info by adding a second --verbose (or -v)

$ git branch -vv
* master        c8ff1bf [origin/master: ahead 1, behind 17] Update README
  release/1.2.0 ebeb74f [upstream/release/1.2.0: gone] Version bump to 1.3.0
  release/1.3.0 32d9cb2 [upstream/release/1.3.0: ahead 1] Version bump for 1.3.0

Hopefully this has been helpful. If have any questions, feel free to find me on Twitter!


Back to Writing