How do I view all commits for a specific day?

I usually check my git log and see what I was working on a specific day and update my timesheet based on that, but it's a pain in the ass to type in the full date in ISO format so I just do it like this

git log --after=jun9 --before=jun10

and I add --author to only print my commits

git log --since=jun9 --until=jun10 --author=Robert 

This prints commits that happened on the last 9th of June (so for 2016 in this case and not for 2015 or 2014 and so on).

The --since/--after and --until/--before parameters can also take stuff like 3 days ago, yesterday, etc.


I made a git alias for that specific purpose:

commitsAtDate = "!f() { git log --pretty='format:%C(yellow)%h %G? %ad%Cred%d %Creset%s%C(cyan) [%cn]' --decorate --after=\"$1 0:00\" --before=\"$1 23:59\" --author \"`git config user.name`\"; }; f"

Usage:

git commitsAtDate 2017-08-18

Nothing wrong with the accepted answer (which I upvoted), but... we're here for science!

The output below can be expanded/customised with pretty=format:<string> placeholders:

git log --pretty='format:%H %an %ae %ai' | grep 2013-11-12

Not 100% immune to errors as the same string could have been entered by a user. But acceptable depending on which placeholders are used. The snippet above would not fail, for instance.

One could as well just parse the whole git log to JSON and consume/manipulate its data to one's heart content. Check https://github.com/dreamyguy/gitlogg out and never look back!

Disclaimer: that's one of my projects.


Thanks John Bartholomew!

The answer is to specify the time, e.g. git log --after="2013-11-12 00:00" --before="2013-11-12 23:59"

Tags:

Git

Git Log