Show Your GIT Branch Name In Your Prompt

Typing git branch over and over to see what branch you are on sucks. Sure, you could argue that you should always KNOW what branch you're currently working on. And if you did, you would obviously not be a git user.

Bouncing around branches can be pretty common, and I know I've messed some things up pretty bad not knowing what branch I was on.

So set up your shell to always put the name of the current branch into your prompt.

function parse_git_branch {
  git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
 
function proml {
  local        BLUE="\[\033[0;34m\]"
  local         RED="\[\033[0;31m\]"
  local   LIGHT_RED="\[\033[1;31m\]"
  local       GREEN="\[\033[0;32m\]"
  local LIGHT_GREEN="\[\033[1;32m\]"
  local       WHITE="\[\033[1;37m\]"
  local  LIGHT_GRAY="\[\033[0;37m\]"
  case $TERM in
    xterm*)
    TITLEBAR='\[\033]0;\u@\h:\w\007\]'
    ;;
    *)
    TITLEBAR=""
    ;;
  esac
 
PS1="${TITLEBAR}\
$BLUE[$RED\$(date +%H:%M)$BLUE]\
$BLUE[$RED\u@\h:\w$GREEN\$(parse_git_branch)$BLUE]\
$GREEN\$ "
PS2='> '
PS4='+ '
}
proml

Pastie Link

Put this at the top of your .bash_profile and you'll be pimping your branch all over.

Thanks to @defunkt for this.

Popularity: 25% [?]

You can skip to the end and leave a response. Pinging is currently not allowed.

4 Thoughts

  1. That has to be one of the coolest "why didn't I think of that" kind of things. Very nice...

  2. Awesome, thanks!

    With zsh, I believe you need to use precmd – I do:

    function precmd() { PROMPT="%n@%m ~$(parse_git_branch)# " }

    for output like

    henrik@Aether ~/Sites/somesite[master]%

    Obviously having defined your parse_git_branch function.

  3. That got a little messed up. See http://pastie.textmate.org/180088

  4. Rather than running git-branch + sed for every shell prompt, you can use this:

    function parse_git_branch
    {
    ref=$(git-symbolic-ref HEAD 2> /dev/null) || return
    echo ${ref#refs/heads/}
    }

Share Your Thoughts?

Please excuse my captcha. But the internets require it these days. Comment triage isn’t billable.