Skip to content

Instantly share code, notes, and snippets.

@henrik
Created December 3, 2008 17:56
Show Gist options
  • Save henrik/31631 to your computer and use it in GitHub Desktop.
Save henrik/31631 to your computer and use it in GitHub Desktop.
Git branch and dirty state in Bash prompt.
# 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)$ '
@pdemanget
Copy link

pdemanget commented Oct 9, 2019

git status --porcelain

function dirty(){
	if [[ $(git status --porcelain)  ]];
		then 
			echo "dirty"; 
		else 
			echo "clean" 
	fi
}

@chrisnolet
Copy link

Another version for zsh (now the default shell on macOS) with color-coding: https://gist.github.com/chrisnolet/d3582cd63eb3d7b4fcb4d5975fd91d04

@schneidersoft
Copy link

schneidersoft commented May 4, 2023

function parse_git_dirty {
        if [[ $(git status --porcelain 2> /dev/null)  ]];
                then
                        echo "*";
                else
                        echo ""
        fi
}

@henrik
Copy link
Author

henrik commented May 4, 2023

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

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