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
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% [?]



About
Mmm, Del.icio.us
That has to be one of the coolest "why didn't I think of that" kind of things. Very nice...
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.
That got a little messed up. See http://pastie.textmate.org/180088
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/}
}