Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

git log: only show yesterday's commit

Tags:

git

git-log

git log --since=yesterday --until=today doesn't work because it will include today's commits.

git log --since=yesterday --until=yesterday doesn't work because it will not show anything at all.

I'm assuming that "yesterday" translates to 12:01am of the previous date, and "today" translates to the current hour. That can make sense to some degree, but it is very unhelpful for me right now.

I also want this to be in a script. So I can't hardcode the dates/times. Is the only option really to programmatically calculate yesterday's date and manually pass the hour as well?

EDIT:

I noticed the following. In the source code for the most recent version of git, it appears that "yesterday" (see code here) means 24*60*60 seconds before the current time. So depending on how precise you need to be, that could matter. Right above that line in the code you see that "today" does mean right now

like image 375
Alexander Bird Avatar asked Jul 03 '14 13:07

Alexander Bird


People also ask

How do I limit a git log?

The most basic filtering option for git log is to limit the number of commits that are displayed. When you're only interested in the last few commits, this saves you the trouble of viewing all the commits in a page. You can limit git log 's output by including the - option.

How can I see previous commits?

The most basic and powerful tool to do this is the git log command. By default, with no arguments, git log lists the commits made in that repository in reverse chronological order; that is, the most recent commits show up first.

What is git log -- Oneline?

Git Log OnelineThe oneline option is used to display the output as one commit per line. It also shows the output in brief like the first seven characters of the commit SHA and the commit message. It will be used as follows: $ git log --oneline.


2 Answers

I was looking for a way to show all commits since "yesterday" and was having trouble to get the commits older than 24 hours ago (if it's 11am and I just use --since=yesterday, I wouldn't get commits made e.g. at 10:30am, as already pointed). Using

git log --since=yesterday.0:00am

or, more conveniently

git log --since=yesterday.midnight

solved it. Kudos to "tinifni" for his very useful gist: https://gist.github.com/tinifni/3756796

like image 181
Nicolas Seiller Avatar answered Sep 27 '22 02:09

Nicolas Seiller


You don't have to compute the date :

git log --since=yesterday --before=0am

However, be careful of what git exactly considers to be the start of the day. Little demonstration :

git log --since=yesterday --before=0am | grep Date:
Date:   Wed Jul 2 18:01:28 2014 +0200
Date:   Wed Jul 2 17:59:39 2014 +0200
Date:   Wed Jul 2 17:59:22 2014 +0200
Date:   Wed Jul 2 17:02:37 2014 +0200
Date:   Wed Jul 2 16:53:52 2014 +0200

git log  | grep Date:
Date:   Wed Jul 2 18:01:28 2014 +0200
Date:   Wed Jul 2 17:59:39 2014 +0200
Date:   Wed Jul 2 17:59:22 2014 +0200
Date:   Wed Jul 2 17:02:37 2014 +0200
Date:   Wed Jul 2 16:53:52 2014 +0200
Date:   Wed Jul 2 16:02:49 2014 +0200
Date:   Wed Jul 2 15:41:15 2014 +0200
Date:   Wed Jul 2 15:16:47 2014 +0200
Date:   Wed Jul 2 14:34:15 2014 +0200
Date:   Wed Jul 2 10:48:25 2014 +0200
Date:   Wed Jul 2 10:44:59 2014 +0200

So apparently the day starts at around 4:30pm at my place! Coincidence? I think not. It is currently 4:30, so as AlexanderBird pointed out, yesterday is 24 hours before the current time in git source code.

like image 28
Pak Avatar answered Sep 24 '22 02:09

Pak