git|July 07, 2020|2 min read

A Practical Guide on how to work with Git log command and history

TL;DR

Use git log with options like --oneline, --graph, and --decorate to visualize commit history, and apply filters to narrow down log output effectively.

A Practical Guide on how to work with Git log command and history

Introduction

In this post, we will see ways to look at git history logs.

For other git training posts, visit:

git log

There are log of options with this command. Try this

git help log

Run simple git log command. Example Output:

commit e7dd2a062d569a9fc577180acde0a2b7a0a570f6 (HEAD -> master, origin/master, origin/HEAD)
Author: Gorav Singal <[email protected]>
Date:   Wed Jul 8 11:49:10 2020 +0530
    t2
commit 007675fed3657a0b194386c8c0efbeac2e1fbbed
Author: Gorav Singal <[email protected]>
Date:   Wed Jul 8 11:49:01 2020 +0530
    t1
commit 1a2af9c018e83aa0adef0684875ab7c33499b7d0
Author: Gorav Singal <[email protected]>
Date:   Wed Jul 8 11:45:46 2020 +0530

    test

I’ve ommitted few lines in above output. This output shows commits in reverse order. The most recent commit is on top. It shows a commit id, author, and date.

Shorter commit ids

There is another command to get this history, with shorter commit ids.

git log --abbrev-commit

This shows shorter length of commit it. Typically this is only required to uniquely identify your commit.

Another short version with some graph

Lets see another shorter version of output:

git log --oneline --graph --decorate

# oneline - is for compact output
# graph - some sort of graphical representation of commit history
# decorate - shows any tags, labels etc

# Output

* e7dd2a0 (HEAD -> master, origin/master, origin/HEAD) t2
* 007675f t1
* 1a2af9c test
* f997108 test
* 9a5a776 test
* 85587c6 test1
* 574c251 test 1

Get range of commit ids

git log 1a2af9c...85587c6

You will get commit history with in this commit id range only.

Get history for last 5 days only

git log --since="5 days ago"

Get history for specific file

git log -- <file>

Get detailed info about a single commit

$ git show 574c251142008b98c74d2bed708d05953acd3f0e

commit 574c251142008b98c74d2bed708d05953acd3f0e
Author: Gorav Singal <[email protected]>
Date:   Tue Jul 7 14:14:56 2020 +0530

    test 1

diff --git a/test1.txt b/test1.txt
new file mode 100644
index 0000000..45b983b
--- /dev/null
+++ b/test1.txt
@@ -0,0 +1 @@
+hi

It has commit-id, author info, date, and the actual diff too.

Related Posts

A Practical Guide on how to to create your own git command alias

A Practical Guide on how to to create your own git command alias

Introduction In this guide, We will learn on how to create some handy command…

Explaining issue&#58; response to preflight request doesn't pass access control check

Explaining issue&#58; response to preflight request doesn't pass access control check

You are developing a nodejs web application having some UI and backend APIs…

Drupal 8 Views - How to merge two fields by hiding another field

Drupal 8 Views - How to merge two fields by hiding another field

Introduction You have a view with 4-5 fields to display. Suppose, there are two…

Curl - Your friend for Rest APIs/Calls - Basic Commands

Curl - Your friend for Rest APIs/Calls - Basic Commands

Curl is a wonderful tool for initiate REST APIs or calls. Or, you can literally…

How to check whether a website link has your URL backlink or not - NodeJs implementation

How to check whether a website link has your URL backlink or not - NodeJs implementation

Introduction I got my seo backlink work done from a freelancer. It was like 300…

Mongoose - Using CRUD operations in mongodb in nodejs

Mongoose - Using CRUD operations in mongodb in nodejs

MongoDB CRUD Operations Mongoose provides a simple schema based solution to…

Latest Posts

REST API Design: Pagination, Versioning, and Best Practices

REST API Design: Pagination, Versioning, and Best Practices

Every time two systems need to talk, someone has to design the contract between…

Efficient Data Modelling: A Practical Guide for Production Systems

Efficient Data Modelling: A Practical Guide for Production Systems

Most engineers learn data modelling backwards. They draw an ER diagram…

Deep Dive on Caching: From Browser to Database

Deep Dive on Caching: From Browser to Database

“There are only two hard things in Computer Science: cache invalidation and…

System Design Patterns for Real-Time Updates at High Traffic

System Design Patterns for Real-Time Updates at High Traffic

The previous articles in this series covered scaling reads and scaling writes…

System Design Patterns for Scaling Writes

System Design Patterns for Scaling Writes

In the companion article on scaling reads, we covered caching, replicas, and…

System Design Patterns for Managing Long-Running Tasks

System Design Patterns for Managing Long-Running Tasks

Introduction Some operations simply can’t finish in the time a user is willing…