Git Tips: Pretty Logs
Topic:Git TipsDeveloper Productivity
One of the main goals of this blog will be to productivity tips for developers and aspiring developers. If you're new to software development, one of the rites of passage for become a "true" developers is learning git, and many of my tips will focusing on improving git skills.
Today I'm going to share a tip that will make a huge difference if you are using git on the command line with the default log format. When you run
git log, you should see a list of commits that will look something like this:
commit b55e2522e7c1858eff41416e49da333b8d44ab78 Author: Brian Mortenson
Date: Wed Jun 17 12:43:32 2020 -0600 remove dummy file commit e4506139a924e93ff706ff2785223041b3c1b507 Author: Brian Mortenson Date: Wed Jun 17 12:43:13 2020 -0600 clean up trailing whitespace commit b4a82a01b19649e50b60925056edc4b17150d8e0 Author: Brian Mortenson Date: Wed Jun 17 12:42:39 2020 -0600 rewrite the temp file ...
Yuck. First of all, each commit occupies six lines of space on the screen. That makes it really hard to scan through and get and idea of what's going on.
Fortunately Git offers a formatting option:
--format=someformat, that allows you to change the way each changeset is printed.
The format string can be take two forms: the name of a built-in format, or a format pattern string.
One of the built-in formats is called
oneline, and it does what it sounds like. Let's take a look:
b55e252 (HEAD -> master) remove dummy file e450613 clean up trailing whitespace b4a82a0 rewrite the temp file 13fcb90 add some more dummy text to the dummy file f6f54da create a dummy text file
Ok, that's better. But there were some useful things in the bigger log, like who authored the commit and when.
I'll show you the log format I use. I've been refinining it since 2011, and think it's the best of both worlds. It looks like this:
b55e252 Brian .. remove dummy file (HEAD -> master) 84 minutes ago e450613 Brian .. clean up trailing whitespace 85 minutes ago b4a82a0 Brian .. rewrite the temp file 85 minutes ago 13fcb90 Brian .. add some more dummy text to the dummy file 88 minutes ago f6f54da Brian .. create a dummy text file 2 hours ago
I like it because it presents a maximal amount of information in a minimal amount of space, while still being easy to read. To use it, add this to your
[format] pretty = tformat:%C(bold yellow)%h %<(8,trunc)%C(bold blue)%aN%Creset %s%C(bold red)%d %Creset%C(dim white)%ar%Creset%C(white)%+N%Creset
This specifies the default format to use anywhere a changeset is displayed, such as
git log or
git show. It uses format placeholders such as
%s for subject (commit message) and
%aN for author name, as well as color placeholders such as
For more information on how to customize the formats, check out https://git-scm.com/docs/pretty-formats
In the next post, I'll show you another favorite log format, and how to use git aliases to improve your workflow.
Thanks for reading!