Go to the Stanford University web site
or
Log In
(To add something to the Commons.)

Show git branch in bash prompt

It's considered good practice to create feature branches in git when working on new functionality. The problem with this is that knowing which branch you are in is not obvious. Pasting the following into your .bashrc file will display the current branch in 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}\
\u@\h:\w$WHITE\$(parse_git_branch)\
$LIGHT_GRAY> "
PS2='> '
PS4='+ '
}
proml

Nice trick! Add a default to avoid messing your terminal colors

I like this trick Aaron! Very unobtrusive but helpful when you're frequently switching branches.

Since I like using the customized color sets that MacTerminal provides me with (Homebrew), using the script above takes over my terminal screen colors. A way around this is to add a "Default" color setting, and return to that ater calling parse_git_branch in proml Here's how I've revised (and simplified - this whole script also redefines the prompt mark for your PS2 and PS4 prompts) this script to just highlight the branch in blue:

function parse_git_branch {
git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ \[\1\]/'
}
function proml {
local BLUE="\[\033[0;34m\]"
# OPTIONAL - if you want to use any of these other colors:
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\]"
# END OPTIONAL
local DEFAULT="\[\033[0m\]"
PS1="\h:\W \u$BLUE\$(parse_git_branch) $DEFAULT\$"

}
proml