Skip to content

Instantly share code, notes, and snippets.

@mcjim
Forked from henrik/.bashrc
Last active July 21, 2023 22:16
Show Gist options
  • Save mcjim/1182950 to your computer and use it in GitHub Desktop.
Save mcjim/1182950 to your computer and use it in GitHub Desktop.
Git branch, dirty and stash state in Bash prompt.
# Quick fork by @mcjim to add stash status and tweak to suit his style.
# http://henrik.nyh.se/2008/12/git-dirty-prompt
# http://www.simplisticcomplexity.com/2008/03/13/show-your-git-branch-name-in-your-prompt/
# host dir master $ # clean working directory
# host dir master* $ # dirty working directory
# host dir master*^ $ # dirty working directory with stash
# host dir master^ $ # clean working directory with stash
function parse_git_dirty {
[[ $(git status 2> /dev/null | tail -n1) != "nothing to commit, working directory clean" ]] && echo "*"
}
function parse_git_stash {
[[ $(git stash list 2> /dev/null | tail -n1) != "" ]] && echo "^"
}
function parse_git_branch {
git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/\1$(parse_git_dirty)$(parse_git_stash)/"
}
PS1='\[\e[0;33m\]${HOSTNAME}\[\e[m\] \W \[\e[0;36m\]$(parse_git_branch)\[\e[m\] $ '
@mcjim
Copy link
Author

mcjim commented Aug 29, 2013

On OS X, use .profile for this.

@gregharvey
Copy link

Hey, hope you're well! Just thought I'd note in here latest version of Git for Fedora Linux required a small change to line 10. It's now:

[[ $(git status 2> /dev/null | tail -n1) != "nothing to commit, working tree clean" ]] && echo "*"

"working tree" rather than "working directory". :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment