-
Star
(108)
You must be signed in to star a gist -
Fork
(86)
You must be signed in to fork a gist
-
-
Save henrik/31631 to your computer and use it in GitHub Desktop.
| # http://henrik.nyh.se/2008/12/git-dirty-prompt | |
| # http://www.simplisticcomplexity.com/2008/03/13/show-your-git-branch-name-in-your-prompt/ | |
| # username@Machine ~/dev/dir[master]$ # clean working directory | |
| # username@Machine ~/dev/dir[master*]$ # dirty working directory | |
| function parse_git_dirty { | |
| [[ $(git status 2> /dev/null | tail -n1) != "nothing to commit (working directory clean)" ]] && echo "*" | |
| } | |
| function parse_git_branch { | |
| git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/[\1$(parse_git_dirty)]/" | |
| } | |
| export PS1='\u@\h \[\033[1;33m\]\w\[\033[0m\]$(parse_git_branch)$ ' |
Thanks for this! I added git status --porcelain to make things more robust, added in color per @srguiwiz's fork, and fixed an issue where colors weren't escaped (causing line-wrapping issues).
Updated color-coded branch here: https://gist.github.com/chrisnolet/46206e21d59f8250bb979a8516a9a034
This doesn't work anymore because git status ends with "nothing to commit, working tree clean" now (at least with my version).
You can replace the contents of parse_git_dirty with [[ -z $(git status --porcelain) ]] || echo "*"
git status --porcelain
function dirty(){
if [[ $(git status --porcelain) ]];
then
echo "dirty";
else
echo "clean"
fi
}
Another version for zsh (now the default shell on macOS) with color-coding: https://gist.github.com/chrisnolet/d3582cd63eb3d7b4fcb4d5975fd91d04
function parse_git_dirty {
if [[ $(git status --porcelain 2> /dev/null) ]];
then
echo "*";
else
echo ""
fi
}
I appreciate that this old Gist still lures people in :)
These days I use Git's supplied prompt script with the GIT_PS1_SHOWDIRTYSTATE=1 setting: https://github.com/henrik/dotfiles/blob/602afb2644b61d0b1b82c09fabe94c60b9c29c74/bash/prompt.sh
Works fine, edited slightly.
git status --porcelainlike @xbx suggested then changed the"nothing to commit (working directory clean) to nothing to commit, working directory clean"string to"". This makes it stable across Git versions and regardless of user configuration