Create a good looking git commit tree in terminal

Git log is a powerful command, but the output can be very boring and linear. What if you could make it look like this:

* 29d5e16 (feature_x) Added file x.
| * 593f99e (HEAD -> bugFix, origin/bugFix) Added YAY to file.
| * 246efc2 Added a file.
|/  
* e81be5c (origin/master, master) Initial commit

This is basically git log with some bells and whistles added. I have created an alias called lol for this. You can call it what you want. Here is how you add it to your global git config:

$ git config --global alias.lol "log --graph --decorate --pretty=oneline --abbrev-commit --all"

Now you can use it:

$ git lol
* 29d5e16 (feature_x) Added file x.
| * 593f99e (HEAD -> bugFix, origin/bugFix) Added YAY to file.
| * 246efc2 Added a file.
|/  
* e81be5c (origin/master, master) Initial commit

Here is a breakdown of all the flags used:

  • --graph creates a the graphical representation of the commit history tree.

  • --decorate the default behaviour is set to short which prints just the name of the branch or tag instead of full ref name

  • --pretty=oneline prints out the commit log content in the form

  • --abrev-commit shortens the 40-byte hexadecimal commit object number.

  • --all shows all the local branches