2013-06-28 4 views
158

Der git-reflog Befehl nicht standardmäßig ein Datum neben jedem Eintrag zeigen, die mich als seltsam Aufsicht schlägt; Ich denke, das wäre sehr hilfreich.Gibt es eine Möglichkeit git-reflog verursachen ein Datum neben jedem Eintrag zeigen?

Gibt es Befehlszeilenoptionen oder andere Verbesserungen, die es zu verursachen verwendet werden können, um zu zeigen, wenn jeder reflog Eintrag hinzugefügt wurde? Die manpage ist ausbleiben ...

+1

Die Anzahl der Upvotes zeigt, wie dringend das Standard sein muss. Liest du Herrn Torvals? –

Antwort

231

Als der Mann Seite schreibt Sie die Optionen für git log verwenden können, sagen git reflog --pretty=short oder andere, wie Sie reflog Einträge

versuchen

git reflog --date=iso 
+7

Dies ersetzt die Kopfnummer (oder was auch immer der richtige Begriff ist) mit dem Datum. Kannst du beides haben? –

+5

@Marco Es scheint, dass Sie ein benutzerdefiniertes Format verwenden müssten: 'git reflog --format = '% C (automatisch)% h% <| (17)% gd% C (blau)% ci% C (zurückgesetzt)% s''. Ich habe einen Alias ​​dafür hinzugefügt: https://github.com/blueyed/dotfiles/commit/5c4e4be9fc6a56d1ccbc16398ac3fef007d5cc47 – blueyed

18

können Sie verwenden, um die --walk-reflogs Variante git log:

git log -g 

Das ist ziemlich ausführliche standardmäßig und druckt das Datum unter anderem. Sie können es mit dem Standard --pretty= Flag formatieren.

Sie können auch den Befehl reflog direkt mit dem --pretty= Flag verwenden, um die Ausgabe zu formatieren.

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

Im Format oben %cd zeigt das Datum links von dem normalen reflog Ausgang begehen.

+6

'% cd', zeigt das Datum des Commits der Reflog-Punkte an, leider ist das was ich (oder das OP) nicht möchte: Wir wollen das Datum des Reflog-Eintrags. – Thanatos

+3

'git log --walk-reflogs --date = iso' habe gerade meinen Tag –

5

Sagen git in welchem ​​Format, entweder gezählt mögen oder zeitlich reflog Einträge, dh

$ git reflog @{now} 

$ git reflog @{0} 
4

Sie müssen ein benutzerdefiniertes Format verwenden:

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

In dem obigen Format %h wird der Hash-Commit %cr die relative committer Datum ist, das %gs reflog unterliegt, und, %s ist Gegenstand begehen. Sehen Sie sich die git-log docs für andere mögliche Platzhalter an. Zum Beispiel mit %ci statt %cr wird absolute Daten verpflichten zeigen.

können Sie diese speichern in Ihrem ~/.gitconfig ein benutzerdefinierten pretty Format und es über einen Alias ​​verweisen:

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

Das Problem dabei ist, dass '% gd' nicht das gleiche Datum wie' @ {now} 'zeigt . Wenn man den Reflog durchsucht, kann es sehr wichtig sein, die genaue Zeit zu kennen ("Ich weiß, dass es um 08:57 Uhr im richtigen Zustand war"). – ErikE

2

Hinweis git 2,10 (Q3 2016) verbessern die Dokumentation über Datum mit git reflog.

Siehe commit 642833d, commit 1a2a1e8 (27. Juli 2016) und commit d38c7b2, commit 522259d, commit 83c9f95, commit 2b68222 (22. Juli 2016) von Jeff King (peff).
half-by: Jeff King (peff).
(Fusionierte von Junio C Hamano -- gitster -- in commit 0d32799; 08 Aug 2016)

Die rev-list options is updated:

Der reflog Bezeichner in der Ausgabe als [email protected]{Nth} dargestellt werden kann (wobei Nth den umgekehrten chronologischen Index im ist, Reflog) oder als [email protected]{timestamp} (mit dem Zeitstempel für diesen Eintrag), abhängig von ein paar Regeln.

It includes: - ein Update über --date=raw:

zeigt das Datum als Sekunden seit der Epoche (1970-01-01 00.00.00 UTC), gefolgt von einem Leerzeichen und dann die Zeitzone als Offset von UTC (a + oder - mit vier Ziffern; die ersten beiden sind Stunden, und die zweiten beiden sind Minuten).
I.e., als ob die Zeitstempel mit strftime("%s %z") formatiert wurden).
Beachten Sie, dass die Option -local den Wert seconds-since-epoch (der immer in UTC gemessen wird) nicht beeinflusst, aber den zugehörigen Zeitzonenwert umschaltet.

Und eine neue Option: --date=unix

zeigt das Datum als Zeitpunkt Unix Epoche (Sekunden seit 1970).
Wie bei --raw ist dies immer in UTC und daher hat -local keinen Effekt.

Verwandte Themen