Show git Branch from Command Line

By  on  

Whether it's simply submitting pull requests or being snobby enough to use vim as a text editor, web developers and designers spend an awful lot of time working from command line.  If you do work with git, you know it's important to keep track of your branches, especially when it comes to knowing which branch you're currently on.

You could frequently execute git branch to ensure you're on the branch you'd prefer to be on, but that's a lot of unnecessary repetition.  After all, with the amount of work we do from command line, there should be a way to always display that information...and there is.  Let me show you how to always show the current checked out branch within the command line display!

Start by opening your .bash_profile file -- this file is typically used to create command line aliases and set environment variables.  Add the following to the .bash_profile file:

# Slightly modified from: https://coderwall.com/p/fasnya/add-git-branch-name-to-bash-prompt

# Show current git branch in command line
parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "

PS1 represents the leading text display before each line execute in the command line.  With the directive above your command line will display like:

Show Git Branch

Always seeing the current branch name (if any) is a time saver and blanket of security for those of use who use git for our projects.  Do yourself the favor of adding this tiny snippet to your .bash_profile and thank me later!

Are you a Windows user? Check out posh-git to achieve the same functionality!

Recent Features

  • By
    7 Essential JavaScript Functions

    I remember the early days of JavaScript where you needed a simple function for just about everything because the browser vendors implemented features differently, and not just edge features, basic features, like addEventListener and attachEvent.  Times have changed but there are still a few functions each developer should...

  • By
    Designing for Simplicity

    Before we get started, it's worth me spending a brief moment introducing myself to you. My name is Mark (or @integralist if Twitter happens to be your communication tool of choice) and I currently work for BBC News in London England as a principal engineer/tech...

Incredible Demos

  • By
    Telephone Link Protocol

    We've always been able to create links with protocols other than the usual HTTP, like mailto, skype, irc ,and more;  they're an excellent convenience to visitors.  With mobile phone browsers having become infinitely more usable, we can now extend that convenience to phone numbers: The tel...

  • By
    Image Reflections with CSS

    Image reflection is a great way to subtly spice up an image.  The first method of creating these reflections was baking them right into the images themselves.  Within the past few years, we've introduced JavaScript strategies and CANVAS alternatives to achieve image reflections without...

Discussion

  1. Lassi Uosukainen

    Why not use the shellthat comes with git and includes this by default?

    • The GitBash that is included with Git is a non-posix system that for anyone like myself who knows a bit about linux shell would drive us crazy as certain simple functions don’t work. Better to just use a real terminal.

      And oh-my-zsh is totally the way to go. Command completion, NVM status, VirtualEnv status + git branches… win win!

  2. Better yet, just install oh-my-zsh and add an awesome theme to it and you can see the path + branch + if you have changes or not.

    The repo: https://github.com/robbyrussell/oh-my-zsh

    The theme I currently use (you may need to install some fonts to get to work) https://cloud.githubusercontent.com/assets/2618447/6316862/70f58fb6-ba03-11e4-82c9-c083bf9a6574.png

  3. Clement

    Why not using « Oh My ZSH »?

  4. Can you explain what the regular expression: '/^[^*]/d' -e 's/* \(.*\)/ (\1)/ does?

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!