2014-07-03 11 views
7

git log --since=yesterday --until=today funktioniert nicht, weil es einschließlich heutigen commits.git log: nur zeigen gestern commit

git log --since=yesterday --until=yesterday funktioniert nicht, weil es überhaupt nichts anzeigen wird.

Ich gehe davon aus, dass "gestern" um 12:01 Uhr des vorherigen Datums übersetzt und "heute" übersetzt in die aktuelle Stunde. Das kann bis zu einem gewissen Grad sinnvoll sein, aber im Moment ist es für mich wenig hilfreich.

Ich möchte auch, dass dies in einem Skript sein. Also kann ich die Daten nicht fest codieren. Ist die einzige Möglichkeit, das Datum von gestern programmatisch zu berechnen und die Stunde manuell zu übergeben?

EDIT:

bemerkte ich folgendes. Im Quellcode für die neueste Version von Git scheint es, dass "gestern" 24 * 60 * 60 Sekunden vor der aktuellen Zeit bedeutet. Je nachdem, wie genau Sie sein müssen, könnte das von Bedeutung sein. Gleich oberhalb dieser Linie im Code sehen Sie, dass „heute“ bedeutet jetzt

Antwort

9

Ich war auf der Suche nach einer Möglichkeit, alle Commits seit "gestern" zu zeigen und hatte Probleme, die Commits älter als 24 Stunden zu bekommen (wenn es 11 Uhr ist und ich einfach --since=yesterday verwende, würde ich keine Commits machen zB an 10:30 Uhr, wie schon angedeutet). Mit

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

oder bequemer

git log --since=yesterday.midnight 

es gelöst. Kudos zu "Tinnifni" für seine sehr nützliche Kern: https://gist.github.com/tinifni/3756796

1
#!/usr/bin/ruby 
require 'date' 
today = Date.today.strftime("%m/%d/%Y") 
yesterday = Date.today.prev_date.strftime("%m/%d/%Y") 
puts `git log --since=#{yesterday} --until="#{today}"` 

Beachten Sie, dass ich glaube, dass dies eine höhere Genauigkeit hat als nur das Bestehen der Zeichenfolge „gestern“ zu git cli, weil „gestern“ nur Mittel 24 * 60 * 60 Sekunden vor der aktuellen Uhrzeit.

3

Sie müssen nicht das Datum berechnen:

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

jedoch von vorsichtig sein, was git genau berücksichtigt der Beginn des Tages sein. Kleine 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 

Also scheinbar beginnt der Tag um 4:30 Uhr bei mir! Zufall? Ich denke nicht. Es ist derzeit 4:30 Uhr, wie AlexanderBird sagte, gestern ist 24 Stunden vor der aktuellen Zeit im Quellcode git.

+0

Haben Sie irgendwelche Commits, die für heute existieren? Wenn dem so ist, glaube ich, dass diese auch in den Ergebnissen auftauchen werden. - zumindest für Git v1.7.9 und v1.8.3.msysgit.0 Welche Version von git verwendest du? –

+0

Sie haben Recht, lassen Sie mich untersuchen, ich glaube, das hat früher funktioniert. Ich benutze git 2.0.1 – Pak

+1

AHA !!!!! Du bist ein brillanter Mann !! –