Git Shell Prompt

See if you're in a git repo when working on the command line

By Trevor Orsztynowicz on

Update A few people have asked me for a repo so I’ve created a clean.sh project on Github.

If you’re a developer then the tools you use from day to day forms a good part of your experience. Something I like to know quickly in a shell is whether or not my PWD is in a git repo or not. I also find it useful to know if I’m in master or a different branch.

That can be accomplished quickly by setting your PS1 to include a single character that tells you whether or not you’re in a git repo. I use a + sign to indicate that the current path is part of a git repo, and that its part of the master branch. For other branches then I use the * token. I dont necessarily care which branch it is. For that I still use git branch, but at least I know I’m not on master.

WHITE="\[\033[1;37m\]"
GREEN="\[\033[0;32m\]"
RESET="\[\033[00m\]"
BGRAY="\[\033[01;36m\]"

_git_branch() {
  branch=$(git branch --no-color 2> /dev/null | sed -e '/^[^*]/d')
  if [ "${branch}" == "* master" ] ; then
    echo "+"
  elif [ "${branch}" ] ; then
    echo "*"
  else
    echo " "
  fi	
}

PS1="${GREEN}\h${BGRAY}:\W${WHITE}\$(_git_branch)\$ ${RESET}"

Here’s what you’ll see if you’re on master

tethys:caliper-app+$ 

And if you’re on a different branch…

tethys:caliper-app*$ 

And if you’re not in a git repo

tethys:~ $