2014-07-03 14 views
7

git log --since=yesterday --until=today non funziona perché sarà include commit di oggi.log git: mostra solo il commit di ieri

git log --since=yesterday --until=yesterday non funziona perché non mostra nulla.

Suppongo che "ieri" si traduca alle 12:01 della data precedente e "oggi" si traduca nell'ora corrente. Questo può avere senso in una certa misura, ma per me è molto inutile adesso.

Voglio anche che questo sia in una sceneggiatura. Quindi non posso hardcode le date/orari. L'unica opzione è davvero quella di calcolare in modo programmatico la data di ieri e di passare manualmente l'ora?

MODIFICA:

Ho notato quanto segue. Nel codice sorgente della versione più recente di git, sembra che "ieri" (see code here) significhi 24 * 60 * 60 secondi prima dell'ora corrente. Quindi, a seconda di quanto preciso devi essere, ciò potrebbe avere importanza. Proprio sopra quella linea nel codice si vede che "oggi" significa in questo momento

risposta

9

Stavo cercando un modo per mostrare tutti i commit da "ieri" e stavo avendo problemi a ottenere i commit più vecchi di 24 ore fa (se sono le 11:00 e io uso solo --since=yesterday, non riceverei i commit fatti ad es. 10:30, come già indicato). Uso

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

o, più convenientemente

git log --since=yesterday.midnight 

risolto. Complimenti a "tinifni" per il suo utile molto utile: 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}"` 

nota, che credo che questo ha più la precisione che semplicemente passando la stringa "ieri" per git cli perché "ieri" unico mezzo 24 * 60 * 60 secondi prima dell'ora corrente.

3

Non è necessario per calcolare la data:

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

Tuttavia, stare attenti a quello git considera esattamente come l'inizio della giornata. Piccola dimostrazione:

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 

Quindi a quanto pare la giornata inizia intorno alle 16:30 al mio posto! Coincidenza? Penso di no. Al momento sono le 4:30, così come ha sottolineato AlexanderBird, ieri è 24 ore prima dell'orario corrente nel codice sorgente git.

+0

Hai qualche commit valido per oggi? Se è così, credo che anche quelli compariranno nei risultati. - almeno per git v1.7.9 e v1.8.3.msysgit.0 Quale versione di git stai usando? –

+0

Hai ragione, lasciami indagare, credo che questo funzionasse. Io uso git 2.0.1 – Pak

+1

AHA !!!!! sei un uomo geniale !! –

Problemi correlati