Git branch v bash promptu

Super název, ale vystihuje přesně o co jsem se snažil.

Hodně práce při vývoji a pak při deploy aplikace strávím v terminálu (iTerm2). Pro správu verzí používám Git a pro deploy se přepínám mezi různými branchemi dané aplikace. A docela mi vadilo, že když uděláte git checkout, tak hned vidíte, že jse se přepnuli do nějaké větve, ale po zadání několika dalších příkazů vám info z gitu odscroluje a pak už nevíte nic. No a těsně před tím, než se rozhodnete udělat git push, zase spustíte git branch, abyste se přesvědčili, že pushujete tu správnou větev… A takhle několikrát deně… Strašný vopruz.

A protože jsem už kdysi viděl v zsh, že jde info o branchi umístit přímo do promptu vašeho shelu, začal jsem hledat jak nastavit bash prompt v iTerm2. Vyzkoušel jsem několik postupů a možností, až mi vyšel tenhle jako nejlépe fungující a zároveň nejjednodušší:

Tohle umístěte do .bashrc:

function parse_git_branch () {
   git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}

RED="\[\033[0;31m\]"
YELLOW="\[\033[0;33m\]"
GREEN="\[\033[0;32m\]"
NO_COLOUR="\[\033[0m\]"
WHITE="\[\e[0;37m\]"

export PS1="$WHITE\h \w$YELLOW\$(parse_git_branch)$NO_COLOUR "

Uložte .basrc a proveďte source .bashrc.

Výsledkem bude krásný prompt, který obsahuje název aktualní branche vašeho git projektu.
Snímek obrazovky 2015-12-04 v 21.21.42
Hezké je, že když se nenacházíte v adresáři s git repozitářem, tak se v promptu žádná informace nevypisuje.