When I am working on a git repository and using the git command line, one of the things that I often end up checking it which git branch I am on and if there are any pending changes. How awesome would it be if the bash shell prompt, told you the branch name if the directory is part of a git repository and if there are any changes. Well, thankfully someone has done this work already and with a little bit of configuration on your part, you can implement the changes.

  1. mkdir ~/.bash

  2. cd ~/.bash

  3. git clone git://github.com/jimeh/git-aware-prompt.git

  4. edit your bash profile (~/.bashrc or ~/.bash_profile)

  5. At the top of your bash profile, add the following 2 lines.

     export GITAWAREPROMPT=~/.bash/git-aware-prompt
     source $GITAWAREPROMPT/main.sh
    
  6. At the end of your bash profile, update the prompt with the following line.

     export PS1="\${debian_chroot:+(\$debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\] \[$txtcyn\]\$git_branch\[$txtred\]\$git_dirty\[$txtrst\]\$ "
    
  7. If you are in a git repository directory like I am in the ~blog directory, your prompt will now look like this:

    • No Uncommited changes

        vagrant@vagrant-ubuntu-trustry-64:~/blog (master) $[]
      
    • Changes that have not been committed. Notice the star after the word master

        vagrant@vagrant-ubuntu-trustry-64:~/blog (master)* $[]
      
  8. If you are in a non-git repository directory such as the ~/ directory, your prompt will now look like this:

     vagrant@vagrant-ubuntu-trustry-64:~/ $