As we get to familiarize with Git in these series of blogs, it’s highly recommended to know some of the utility commands of Git for debugging purposes.
Git Log in short Shows the commit logs
Git Log commands is used to list the commits made by the developers in the repo. It’s a kind of review tool to read the history of the repo. Git Log command comes with lot of options which will take hours of time to go through each and every option and understand it’s usage. Visit Git Log official documentation page, to go through all options in Git Log.
The advanced features of git log can be split into two categories:
Formatting how each commit is displayed
Filtering which commits are included in the output
Together, these two skills give you the power to go back into your project and find any information that you could possibly need.
Let’s understand most powerful and useful Git Log command options
Git Log command shows all the commits with their ID, author, date and it’s commit message
git log --oneline option compresses each commit to a single line. It displays commit hash and first line of commit message. This was the widely used option. This option helps to gain high-level overview of a project.
git log --pretty=oneline is alternative to this command except it shows entire commit hash.
git log --oneline -p option shows each commit with the changes made on each file.
git log --pretty=:format option is used to view log in different pretty formats. Replace
:format with any one of oneline, short, medium, full, fuller, reference, email, raw.
Some of the format options are as follows,
git log --oneline --stat option shows logs with insertions and deletes on each file.
git log --oneline --graph --decorate option shows logs with tree visual representation. This option can be used, if your project has multiple branches. Changes on branches and merges can be best viewed with this option.
git shortlog command is a special version of git log intended for creating release announcements. It groups each commit by author and displays the first line of each commit message. This is an easy way to see who’s been working on what.
git shortlog sorts the output by author name, but you can also pass the
-n option to sort by the number of commits per author.
For all of your other
git log formatting needs, you can use the
--pretty=format:"" option. This lets you display each commit however you want using
For example, the %an, %h, %s and %cd characters in the following command are replaced with the committer name, abbreviated commit hash, commit message and the committed date, respectively.
git log --pretty=format:"%an committed (%h) %s on %cd"
Git supports out of the box filtering options. Let’s explore filtering options available in git log command.
If you’re looking for a commit from a specific time frame, you can use the
--before flags for filtering commits by date.
git log --oneline --after="2022-7-5" / git log --oneline --after="yesterday"
You can limit git log’s output by including the - option. For example, the following command will display only the 2 most recent commits.
git log --oneline -2
Filter the commits created by a particular user, use the --author flag. You can either use regular expression or the exact name of the author to filter the commits.
git log --oneline --author="Arunachalam B"
You can also use regular expressions to create more complex searches. For example, the following command searches for commits by either Arunachalam or Ashwin.
To filter commits by their commit message, use the --grep flag. This works just like the --author flag discussed above, but it matches against the commit message instead of the author.
`git log --oneline --grep="Upgrades"`
Many times, you’re only interested in changes that happened to a particular file. To show the history related to a file, all you have to do is pass in the file path. For example, the following returns all commits that affected either the foo.py or the bar.py file:
`git log --oneline -- package.json`
Hope you’ll understand the powerful options available with git log command. This is the most preferred command by developers to identify a commit in a repo.
Subscribe to our newsletter to receive more such insightful articles that get delivered straight to your inbox.