C'è un modo per far sì che git-reflog mostri una data accanto a ciascuna voce?


305

Il comando git-reflog per impostazione predefinita non mostra una data accanto a ciascuna voce, il che mi sembra una strana svista; Penso che questo sarebbe molto utile.

Esistono opzioni da riga di comando o altre modifiche che possono essere utilizzate per far sì che venga visualizzato quando è stata aggiunta ciascuna voce di reflog? La manpage non è disponibile ...

Risposte:


453

Mentre la pagina man scrive, puoi usare le opzioni per git logdire, git reflog --pretty=shorto per qualsiasi altra cosa tu voglia

provare

git reflog --date=iso

11
Questo sostituisce il numero di testa (o qualunque sia il termine corretto) con la data. Puoi avere entrambi?
Marco Eckstein,

7
@Marco sembra si dovrà utilizzare un formato personalizzato: git reflog --format='%C(auto)%h %<|(17)%gd %C(blue)%ci%C(reset) %s'. Ho aggiunto un alias per questo: github.com/blueyed/dotfiles/commit/…
blueyed

1
@blueyed Non è lo stesso: il --date=isocomando reflog mostra quando è stata creata la voce reflog, non l'ora del commit. Apprezzo ancora il tuo alias, visto che l'ho usato per fare un reflog più carino.
Johan Henkens,

36

Puoi usare la --walk-reflogsvariante di git log:

git log -g

Questo è piuttosto dettagliato per impostazione predefinita e stampa la data tra le altre cose. Puoi formattarlo con il --pretty=flag standard .

È inoltre possibile utilizzare il comando reflog direttamente con il --pretty=flag per formattare l'output.

git reflog --pretty='%cd %h %gd %gs'

Nel formato sopra, %cdmostra la data di commit a sinistra del normale output reflog.


9
%cd, mostra la data del commit a cui punta il reflog, purtroppo, che non è ciò che io (o il PO) sto cercando: vogliamo la data della voce reflog.
Thanatos,

10
git log --walk-reflogs --date=isoHo appena fatto la mia giornata
Alois Mahdal,

7

Devi usare un formato personalizzato:

git reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)'

Nel formato sopra, %hè l'hash di commit, %crè la data relativa del committer, %gsè l'oggetto reflog ed %sè l'oggetto del commit. Guarda i documenti git-log per altri possibili segnaposto. Ad esempio, l'utilizzo di %ciinvece di %crmostrerà le date di commit assolute.

Puoi salvarlo nel tuo ~ / .gitconfig usando un prettyformato personalizzato e fare riferimento ad esso tramite un alias:

[alias]
    rl = reflog --pretty=reflog
[pretty]
    reflog = %C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)

1
Il problema è che %gdnon mostra la stessa data @{now}. Quando si cerca il reflog, conoscere l'ora esatta può essere davvero importante (ad esempio "So che era nello stato giusto alle 8:57").
ErikE,

2
@ErikE - Basta cambiare crin ciper ottenere il timestamp completo di ogni azione:git reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%ci%C(reset) %gs (%s)'
n1k31t4

6

Indica gitin quale formato, reflogvoci contate o reflogvoci temporizzate , ad es

$ git reflog @{now}

$ git reflog @{0}

Al programmatore in me non piacciono le date del "linguaggio naturale" all'interno {}, ma fortunatamente questa tecnica funziona anche con --date=iso.
mwfearnley,

5

Nota git 2.10 (3 ° trimestre 2016) migliora la documentazione relativa alla data con git reflog.

Vedi commit 642833d , commit 1a2a1e8 (27 lug 2016) e commit d38c7b2 , commit 522259d , commit 83c9f95 , commit 2b68222 (22 lug 2016) di Jeff King ( peff) .
Aiutato da: Jeff King ( peff) .
(Unito da Junio ​​C Hamano - gitster- in commit 0d32799 , 08 ago 2016)

Le rev-listopzioni sono aggiornate :

Il designatore reflog nell'output può essere visualizzato come ref@{Nth}(dove si Nthtrova l'indice cronologico inverso nel reflog) o come ref@{timestamp}(con il timestamp per quella voce), a seconda di alcune regole.

Include : - un aggiornamento su --date=raw:

mostra la data in secondi dall'epoca (1970-01-01 00:00:00 UTC), seguita da uno spazio e quindi il fuso orario come offset da UTC ( +ao -con quattro cifre; le prime due sono ore e i secondi due sono minuti).
Cioè, come se il timestamp fosse formattato con strftime("%s %z")).
Si noti che l' -localopzione non influisce sul seconds-since-epoch valore (che viene sempre misurato in UTC), ma cambia il valore del fuso orario associato.

E una nuova opzione: --date=unix

mostra la data come data / ora di Unix (secondi dal 1970).
Come per --raw, questo è sempre in UTC e quindi -localnon ha alcun effetto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.