Ich versuche, das letzte Commit in Git anzuzeigen, benötige aber das Datum in einem speziellen Format.
Ich weiß, dass das Protokoll-Format %ad
das Format respektiert --date
, aber das einzige --date
Format, das ich finden kann, ist "kurz". Ich möchte die anderen kennen und wissen, ob ich eine benutzerdefinierte erstellen kann, z.
git -n 1 --date=**YYMMDDHHmm** --pretty=format:"Last committed item in this release was by %%an, %%aD, message: %%s(%%h)[%%d]"
git
command-line
ar3
quelle
quelle
--date=iso-strict
: siehe meine Antwort unten--date=(relative|local|default|iso|iso-strict|rfc|short|raw)
auch haben:--date=(relative-local|default-local|iso-local|iso-strict-local|rfc-local|short-local|raw-local)
Antworten:
Die anderen sind (von
git help log
):Es gibt keine integrierte Methode, die ich kenne, um ein benutzerdefiniertes Format zu erstellen, aber Sie können etwas Shell-Magie ausführen.
Im ersten Schritt erhalten Sie einen Millisekunden-Zeitstempel. Sie können die zweite Zeile ändern, um den Zeitstempel nach Ihren Wünschen zu formatieren. Dieses Beispiel gibt Ihnen etwas Ähnliches
--date=local
mit einem gepolsterten Tag.Und wenn Sie einen dauerhaften Effekt erzielen möchten, ohne dies jedes Mal einzugeben, versuchen Sie es
Oder für die Auswirkung auf Ihre gesamte Git-Nutzung mit diesem Konto
quelle
git config log.date iso
git config --global log.date iso
--format:<args>
wird<args>
auf strftime übergehen.Darüber hinaus können Sie
--date=(relative|local|default|iso|iso-strict|rfc|short|raw)
, wie bereits erwähnt, auch ein benutzerdefiniertes Protokolldatum mit verwendenDies gibt so etwas wie aus
2016-01-13 11:32:13
.HINWEIS: Wenn Sie sich das unten verlinkte Commit ansehen, müssen Sie es zumindest benötigen, Git v2.6.0-rc0damit dies funktioniert.
In einem vollständigen Befehl wäre es so etwas wie:
Ich konnte dies nirgendwo in der Dokumentation finden (wenn jemand weiß, wo es zu finden ist, bitte kommentieren), also habe ich die Platzhalter ursprünglich durch Ausprobieren gefunden.
Bei meiner Suche nach Dokumentation dazu habe ich ein Commit für Git selbst gefunden , das angibt, dass das Format direkt eingespeist wird
strftime
. Wenn Siestrftime
( hier oder hier ) nachsehen, stimmen die gefundenen Platzhalter mit den aufgeführten Platzhaltern überein.Die Platzhalter umfassen:
In einem vollen Befehl wäre es so etwas wie
quelle
git config --global alias.lg "log --graph --decorate -30 --all --date-order --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%C(cyan)%h%Creset %C(black bold)%ad%Creset%C(auto)%d %s'"
git lg
und erhalte immer noch den folgenden Fehler.fatal: unknown date format format:%Y-%m-%d %H:%M:%S
. Ich laufe Git unter Windows. Hier ist meine Git-Version.git version 1.9.5.msysgit.1
. Muss ich also auf die neuere Version aktualisieren?%X
, ~~ Ich habe es gerade auf meinem Computer versucht und definitiv Zeiten in meiner Zeitzone erhalten. ~~ Hmm, jetzt bin ich mir nicht sicher. Ich habe ein Repo von jemandem geklont, der sich nicht in meiner Zeitzone befindet, und es erneut versucht. Ich glaube, ich bekomme nur die Zeit mit den aktuellen Gebietsschemaeinstellungen formatiert, aber die Zeitzone ist abgeschnitten.Nachdem ich lange nach einer Möglichkeit gesucht hatte,
git log
das Datum im Format so auszugebenYYYY-MM-DD
, dass es funktioniertless
, fand ich das folgende Format:zusammen mit dem Schalter
--date=iso
.Dadurch wird das Datum im ISO-Format (ein langes) und anschließend das 14-fache der Rücktaste (0x08) gedruckt, wodurch in meinem Terminal effektiv alles nach dem JJJJ-MM-TT-Teil entfernt wird. Beispielsweise:
Dies gibt so etwas wie:
Ich habe einen Alias
l
mit einigen Änderungen am obigen Format erstellt. Es zeigt das Commit-Diagramm links, dann den Hash des Commits, gefolgt vom Datum, den Kurznamen, den Refnames und dem Betreff. Der Alias lautet wie folgt (in ~ / .gitconfig):quelle
--date=short shows only date but not time, in YYYY-MM-DD format.
| sort | uniq
nicht funktionieren.%C(bold cyan)%ai%x08%x08%x08%x08%x08%x08%x08%x08%x08%C(reset) %C(bold green)(%ar%x08%x08%x08%x08)%C(reset)
, um das Format zu bekommen2015-01-19 11:27 (11 days)
. +1Sie können die Option zum Abschneiden von Feldern verwenden, um so viele
%x08
Zeichen zu vermeiden . Beispielsweise:ist äquivalent zu:
Und ein bisschen augenschonender.
Besser noch, für dieses spezielle Beispiel wird die Verwendung
%cd
die ehren.--date=<format>
Wenn Sie möchtenYYYY-MM-DD
, können Sie dies tun und vermeiden%<
und%x08
ganz:Ich habe gerade bemerkt, dass dies in Bezug auf den ursprünglichen Beitrag etwas kreisförmig war, aber ich werde es verlassen, falls andere mit den gleichen Suchparametern wie ich hier ankamen.
quelle
Ich brauchte das Gleiche und fand Folgendes für mich:
Das
--date=format
formatiert die Datumsausgabe, in der angegeben--pretty
wird, was gedruckt werden soll.quelle
git log --pretty=format:"%h%x09%cd%x09%s" --date=format:'%Y-%m-%d %H:%M:%S %p'
Beachten Sie das
date=iso
Format " ": Es ist nicht genau ISO 8601 .Siehe Commit " 466fb67 " von Beat Bolli (
bbolli
) für Git 2.2.0 (November 2014)hübsch: Geben Sie ein striktes ISO 8601-Datumsformat an
Siehe diesen Thread zur Diskussion.
quelle
Beachten Sie, dass dies in Ihre lokale Zeitzone konvertiert wird, falls dies für Ihren Anwendungsfall von Bedeutung ist.
quelle
Git 2.7 (Q4 2015) wird
-local
als Anleitung vorgestellt.Es bedeutet, dass zusätzlich zu:
Sie werden auch haben:
Das
-local
Suffix kann nicht mitraw
oder verwendet werdenrelative
. Referenz .Sie können jetzt mithilfe der lokalen Zeitzone nach einem beliebigen Datumsformat fragen . Sehen
johnkeeping
) .Siehe commit add00ba , commit 547ed71 ( 03.09.2015 ) von Jeff King (
peff
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 7b09c45 , 05. Oktober 2015)Insbesondere erwähnt der letzte von oben (Commit Add00ba):
quelle
format-local
funktioniert! Es ist also sehr perfekt, die Kraft zwischen dem Lieblingsformat und dem lokalen Format zusammenzuführen.Die Formatoption
%ai
war das, was ich wollte:quelle
Mit Git 2.21 (Q1 2019) wurde ein neues Datumsformat "
--date=human
" eingeführt, das seine Ausgabe abhängig davon ändert, wie weit die Zeit von der aktuellen Zeit entfernt ist ."
--date=auto
" kann verwendet werden, um dieses neue Format zu verwenden, wenn die Ausgabe an den Pager oder an das Terminal geht, andernfalls das Standardformat.Siehe Commit 110a6a1 , Commit b841d4f (29. Januar 2019) und Commit 038a878 , Commit 2fd7c22 (21. Januar 2019) von Stephen P. Smith (``) .
Siehe Commit acdd377 (18. Januar 2019) von Linus Torvalds (
torvalds
) .(Zusammengeführt von Junio C Hamano -
gitster
- in commit ecbe1be , 07. Februar 2019)Git 2.24 (Q4 2019) hat den Code vereinfacht.
Siehe Commit 47b27c9 , Commit 29f4332 (12. September 2019) von Stephen P. Smith (``) .
(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 36d2fca , 07. Oktober 2019)quelle
quelle
Verwenden Sie Bash und den Befehl date, um von einem ISO-ähnlichen Format in das gewünschte zu konvertieren. Ich wollte ein org-Modus Datumsformat (und Listenposition), so dass ich dies tat:
Und das Ergebnis ist zum Beispiel:
quelle