Set up Git and customise iTerm2 to display the current branch with fancy colours

Git is an excellent distributed version control system for your projects projects.

To download Git and learn how to install and set up, go here.

Mac OS X includes a great terminal editor, but among the handful of alternatives is one that easily rises above them all. iTerm2 comes with a vast number of time-saving features and high level of customisability.

As an example here I explain how to customise iterm with the cool colours that Paul Irish uses in his videos (thanks to @digitalformula).

This example, guessing what Paul uses the various CLI prefix symbols for, uses “o” to indicate that we are in a standard directory, and “±” to indicate that we are in a git branch directory.

To make this happen, you need to copy the file .git-completion from the git source to your home (~) directory

cp /usr/local/git/contrib/completion/git-completion.bash ~/

Then open or create a file called .bash_profile also in your home directory, and add the following lines:

# enable the git bash completion commands
source ~/

# enable git unstaged indicators - set to a non-empty value

# enable showing of untracked files - set to a non-empty value

# enable stash checking - set to a non-empty value

# enable showing of HEAD vs its upstream

BLACK=$(tput setaf 0)
RED=$(tput setaf 1)
GREEN=$(tput setaf 2)
YELLOW=$(tput setaf 3)
LIME_YELLOW=$(tput setaf 190)
POWDER_BLUE=$(tput setaf 153)
BLUE=$(tput setaf 4)
MAGENTA=$(tput setaf 5)
CYAN=$(tput setaf 6)
WHITE=$(tput setaf 7)
BRIGHT=$(tput bold)
NORMAL=$(tput sgr0)
BLINK=$(tput blink)
REVERSE=$(tput smso)
UNDERLINE=$(tput smul)

# set the prompt to show current working directory and git branch name, if it exists

# this prompt is a green username, black @ symbol, cyan host, magenta current working directory and white git branch (only shows if you're in a git branch)
# unstaged and untracked symbols are shown, too (see above)
# this prompt uses the short colour codes defined above
# PS1='${GREEN}\u${BLACK}@${CYAN}\h:${MAGENTA}\w${WHITE}`__git_ps1 " (%s)"`\$ '

# this is a cyan username, @ symbol and host, magenta current working directory and white git branch
# it uses the shorter , but visibly more complex, codes for text colours (shorter because the colour code definitions aren't needed)
# PS1='\[33[0;36m\]\u@\h\[33[01m\]:\[33[0;35m\]\w\[33[00m\]\[33[1;30m\]\[33[0;37m\]`__git_ps1 " (%s)"`\[33[00m\]\[33[0;37m\]\$ '

# return the prompt prefix for the second line
function set_prefix {
    if [[ -z $BRANCH ]]; then
        echo "${NORMAL}o"
        echo "${UNDERLINE}+"

# and here's one similar to Paul Irish's famous prompt ... not sure if this is the way he does it, but it works  🙂
# 33[s = save cursor position
# 33[u = restore cursor position

PS1='${MAGENTA}\u${WHITE} in ${GREEN}\w${WHITE}${MAGENTA}`__git_ps1 " on %s"`${WHITE}\r\n`set_prefix`${NORMAL}${CYAN}33[s33[60C (`date "+%a, %b %d %H:%M"`)33[u${WHITE} '

Leave a Reply

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

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

Google photo

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

Twitter picture

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

Facebook photo

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

Connecting to %s

%d bloggers like this: