One of the coolest features of the git log command is the graphing feature. The git log graph command creates a graphic overview of how your various development pipelines have branched and merged over time. The fact that this visual display is done through a decidedly non-visual BASH shell or terminal window is what makes the feat particularly impressive.
The git log graph command
In its simplest form, the git log graph command looks as follows:
graph@log:~$ git log –graph
The problem with the basic –graph usage is that the verbosity of the log gets in the way. Matching the git log graph command with a pretty oneline option makes the output look much nicer:
graph@log:~$ git log –graph pretty=online
You can condense this line by dropping the pretty switch:
graph@log:~$ git log –graph –online
Both of these options greatly improve the readablility of the git log graph, while at the same time allowing the creation and merging of branches over time to be displayed pleasantly.
Graph all git branches
To see all branches in the graph use the –all switch. Also, in most situations, the –decorate switch will provide all of the supplemental information you’ll need, all formatted and nicely color coded.
graph@log:~$ git log –all –decorate –oneline –graph
You can really get crazy with the way you format the git log, but these four switches together is all most Git users will ever need. The mnemonic a dog is a good way to remember this combo:
graph@log:~$ git log --all --decorate --oneline --graph
A pretty git log graph
The pretty switch of the git log provides a multitude of ways to format git log output, especially when the custom string is used. For example, if you simply provide the string %ad as the parameter to the pretty switch, you will see the git log graph with nothing but commit dates next to the branch and merge points.
The %h string will display nothing but a short commit hash, and %s will display nothing but the commit message next to the git log graphs’ commit points
graph@log:~$ git log –graph –pretty=”%h” –date=short
graph@log:~$ git log –graph –pretty=”%s” –date=human
If you wanted to get real crazy you could even start coloring coding the display with a git log graph call like the one that follows:
git log --graph --pretty="%C(yellow) Hash: %h %C(blue)Date: %ad %C(red) Message: %s " --date=human
Git log graph examples
The following images show the git log graph output for these commands:
git log --graph --pretty="%ad" --date=short
git log --graph --pretty="%C(yellow) %s"
git log --graph --pretty="%C(bold green) %(ar)"
git log --graph --pretty="%C(bold blue)%h" --decorate --all