source /usr/lib/git-core/git-sh-prompt git_is_repo() { if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == "true" ]]; then return 1 fi return 0 } git_current_branch() { echo $(git rev-parse --abbrev-ref HEAD) } git_repo_is_dirty() { if [[ -z $(git status --short) ]]; then return 1; fi return 0; } git_prompt_info() { ! git_is_repo || return current_branch=$(git_current_branch 2> /dev/null) current_commit=$(git rev-parse --short HEAD 2> /dev/null) suffix='' if [[ ! -z ${current_commit} ]]; then suffix="${suffix} [%{$fg_bold[yellow]%}${current_commit}%{$reset_color%}]" fi if git_repo_is_dirty; then suffix="${suffix} %{$fg_bold[red]%}*%{$reset_color%}" fi if [[ -n git_current_branch ]]; then echo " %{$fg_bold[green]%}$(__git_ps1 %s)%{$reset_color%}${suffix}" fi } setopt promptsubst export PS1='${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[blue]%}%~%{$reset_color%}$(git_prompt_info) \$ '