Setting up the prompt to show git branch and state information

A small snippet of code is run every time the prompt is about to be printed, that outputs information about the current branch, and staged and unstaged modifications.

On Linux

Put the following in your ~/.bashrc file:

for candidate in /usr/share/git-core/contrib/completion/git-prompt.sh /usr/lib/git-core/git-sh-prompt; do
    # This path might need to be adjusted ^^^
    ! type __git_ps1 &>/dev/null && [ -e $candidate ] && . $candidate
done
 
if type __git_ps1 &>/dev/null; then
    export GIT_PS1_SHOWDIRTYSTATE=1
    export GIT_PS1_SHOWUNTRACKEDFILES=1
    export GIT_PS1_SHOWCOLORHINTS=1
    export PROMPT_DIRTRIM=2
    export PROMPT_COMMAND='__git_ps1 "\w" "\\\$ "'
fi

… and then reload your shell config with exec bash.

On Mac

Edit `~/.bash_profile`

if [ -f $(brew --prefix)/etc/bash_completion.d/git-prompt.sh ]; then
     . $(brew --prefix)/etc/bash_completion.d/git-prompt.sh        # This path might need to be adjusted
fi
 
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWSTASHSTATE=1
export GIT_PS1_SHOWUNTRACKEDFILES=1
# export GIT_PS1_SHOWUPSTREAM=verbose
# export GIT_PS1_DESCRIBE_STYLE=branch
export PROMPT_COMMAND='__git_ps1 "\u@\h:\w" " \\\$ "'
export GIT_PS1_SHOWCOLORHINTS=1

(Works only with the homebrew version of git.)

Missing ''git-prompt.sh''

Under both Linux and Mac, if you cannot find git-prompt.sh, just get the latest version from git git https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh, save it anywhere in the home directory, and put the path to it in the line annotated with “This path might need to be adjusted”.