Painting a masterpiece
StackOverflowStackOverflow
Gradient background

A custom alias for a pretty Git log with a graph

Clarice Bouwer

Software Engineering Team Lead and Director of Cloudsure

Thursday, 2 September 2021 · Estimated 3 minute read

I have added a git alias for git log by editing the global config ~/.gitconfig so that it is not localized to a specific git repository. I added the following below the [alias] section 👇

Copy
alias.lg=log --pretty='%Cblue%h%Creset | %C(yellow)%d%Creset %s %Cgreen(%cr)%Creset %C(cyan)[%an]%Creset' --graph

git lg will now print a pretty colored summarized log with a graph to indicate branching and merges. My particular version displays a

  • short hash %h in blue followed by a pipe
  • ref names in yellow (HEAD -> master, origin/master) %d like the --decorate option of git-log
  • the message (or subject) %s
  • the relative committer date (%cr) - 2 months ago - in green and in parenthesis, and
  • the author name in cyan [%an] in block brackets
Copy
...
* 28aed2c |  Add HONOR_DNT env var (2 days ago) [Clarice Bouwer]
* 1e3e505 |  Add track custom click event on anchors (2 days ago) [Clarice Bouwer]
* cf7dc67 |  Upgrade to Google Analytics 4 (2 days ago) [Clarice Bouwer]
...

instead of

Copy
...

commit 28aed2cbb6ee56f625f26b101bc1e5b0ee2bd18c
Author: Clarice Bouwer <cbillowes@gmail.com>
Date:   Wed Sep 1 03:27:30 2021 +0400

    Add HONOR_DNT env var

commit 1e3e50557c5ac659f19ce30a85f5d9bd3a53adab
Author: Clarice Bouwer <cbillowes@gmail.com>
Date:   Wed Sep 1 03:26:13 2021 +0400

    Add track custom click event on anchors

commit cf7dc679eb6b855d286dad8726b32d4afa8a372f
Author: Clarice Bouwer <cbillowes@gmail.com>
Date:   Tue Aug 31 21:14:17 2021 +0400

    Upgrade to Google Analytics 4

...

A more complex example with a graph and a nonsensical history:

Copy
*   56380d6 |  Merge branch 'master' of origin/master (1 year, 10 months ago) [Stephen Hawking]
|\
| * 7ac7c22 |  Avast, me proud beauty (1 year, 10 months ago) [Sheldon Cooper]
* | d021f77 |  Wanna know why my Roger is so Jolly (1 year, 10 months ago) [Douglas Adams]
* | 1f56c7d |  Have ya ever met a man with a real yardarm (1 year, 10 months ago) [George Martin]
* | 291af41 |  Merge branch 'master' of origin/master (1 year, 10 months ago) [George Lucas]
|\|
| * fb1496f |  Come on up and see me urchins (1 year, 10 months ago) [Simon Pegg]
| * 72cc156 |  Prepare to be boarded (1 year, 10 months ago) [Stan Lee]
| * a5d133d |  I’ve sailed the seven seas, and you’re the sleekest schooner I’ve ever sighted (1 year, 10 months ago) [Don Tillman]
| * c75be35 |  Let’s get together and haul some keel (1 year, 10 months ago) [Abby Sciuto]
| * d17b2a0 |  What are YOU doing here (1 year, 10 months ago) [Xander Harris]
| *   98e5f2c |  Merge branch 'master' of origin/master (1 year, 10 months ago) [Steve Urkel]
| |\
| * | 4727647 |  Take what you can, give nothing back (1 year, 10 months ago) [Leonard Hofstadter]
* | | 478ebc2 |  You can always trust the untrustworthy (1 year, 10 months ago) [Spencer Reid]
| |/
|/|
* | 60bbae5 |  Merge branch 'master' of origin/master (1 year, 10 months ago) [Amy Farrah Fowler]
|\|
| * 0fdc537 |  If ye can’t trust a pirate, ye damn well can’t trust a merchant either (1 year, 10 months ago) [Carlton Banks]
| *   a9c6557 |  Merge branch 'master' of origin/master (1 year, 10 months ago) [Lisa Simpson]
| |\
| * | 5f4e047 |  The existence of the sea means the existence of pirates (1 year, 10 months ago) [Ross Geller]
* | | 4f727e7 |  Not all treasure is silver and gold (1 year, 10 months ago) [Adrian Monk]
| |/
|/|
* | 9645fc7 |  Work like a captain, play like a pirate (1 year, 10 months ago) [Dexter Morgan]
|/
* d32cdee |  Ahoy! lets trouble the water! (1 year, 10 months ago) [Hiro Nakamura]

References