Labeling Git Branches

I came across git branch descriptions today and it is so freakin useful that I wanted to share.

My branches usually look like this:

$ git branch
  add-feature
  feature-add
* implement-foo
  implement-foo2
  temp
  temp2

It is… not the clearest. Luckily, you can add descriptions to branches:

$ git checkout implement-foo2
$ git branch --edit-description

---Pops up an editor---

These are the tests for my implement-foo change, they can be cherry-picked onto implement-foo when they are done.

---Save & exit---

The only problem is that these descriptions don’t show up when you do git branch. To display them, use jsageryd‘s script (and vote up the comment, it should really be nearer the top):

#!/bin/bash

branches=$(git for-each-ref --format='%(refname)' refs/heads/ | sed 's|refs/heads/||')
for branch in $branches; do
  desc=$(git config branch.$branch.description)
    if [ $branch == $(git rev-parse --abbrev-ref HEAD) ]; then
       branch="* 33[0;32m$branch33[0m"
    else
       branch="  $branch"
    fi
  echo -e "$branch 33[0;36m$desc33[0m"
done

Save it as something (I called it “branch”), make it executable, add it to your path, and then you can do:

$ branch
  add-feature
  feature-add
  implement-foo
* implement-foo2 These are the tests for my implement-foo change, they can be cherry-picked onto implement-foo when they are done.
  temp
  temp2

It’s even got nice colors for the selected branch and descriptions.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: