git: Zeitzone und Zeitstempelformat

75

Von git kann ich den Zeitstempel bekommen:

"2011-10-04 12:58:36 -0600"

aber gibt es eine Möglichkeit, es zu zeigen als:

"2011-10-04 06:58:36"

Alles was ich will ist, den Zeitzonenversatz von -0600 loszuwerden. Wie kann ich das machen? Vielen Dank.

SandyBr
quelle
6
Zu Ihrer Information, 2011-10-04 12:58:36 -0600wäre 2011-10-04 18:58:36UTC. Sie haben in Ihrem Beispiel falsch konvertiert.
Matt Johnson-Pint

Antworten:

87

Wenn Sie nach dem Git-Protokoll fragen, können Sie versuchen, das korrekteste Formular auszuwählen aus:

git log --date={relative,local,default,iso,rfc}

--date=local scheint der beste Kandidat zu sein.

Verwenden Sie, um dies dauerhaft zu machen git config --global log.date local.

Fauler Dachs
quelle
48
Um dies "permanent" zu machen, verwenden Sie "git config --global log.date local".
Rickumali
12
localfunktioniert. Anscheinend enthält ein Commit eine eigene Zeitzone, localübersetzt diese jedoch alle in die lokale Zeitzone. Ich möchte jedoch wirklich, dass ISO oder RFC in eine einzige Zeitzone übersetzt werden. Weiß jemand, wie man das macht?
cdunn2001
2
Ah! --date=iso-strict-localfür strenge ISO8601. Süss!
cdunn2001
2
Ich weiß nicht, warum --date=localmit isoFormat meine Ubuntu-Maschinen nicht funktionieren. Ich bekomme immer noch TZ Offset. Jede Hilfe bitte
user2436428
1
Ich habe Ihren Kommentar dazu, wie dies dauerhaft gemacht werden kann, zur Antwort selbst @rickumali hinzugefügt. Danke
Elijah Lynn
35
git log --date=local

Macht den Trick.

git config --global log.date local
Bindung
quelle
1
Wenn ich: laufe git log --date=local --pretty=format:"%ai,%an,%ae,%s", erhalte ich immer noch einen Zeitzonenversatz. Funktioniert nicht --data=localmit ISO- Daten?
user2436428
@ user2436428 Wenn Sie die Suche in der Git-Protokolldokumentation nach Format: <string> überprüfen, müssen Sie Folgendes verwenden: % ad : Autorendatum (Format respektiert --date = Option) anstelle von % ai : Autorendatum, ISO 8601-ähnliches Format
ptha
32
TZ=UTC git log --date=local

um eine einmalige Zeitzonenausgabe ohne lokale Zeitzone zu erhalten.

Christian
quelle
TZ=UTC git log --date=iso-localISO 8601
Brice
4
Oder --date='format-local:%Y%m%dT%H%M%SZ'für ein kompaktes ISO 8601-Format (oder ein anderes Format).
Robinst
Ich benutze date = format-local:%a %d-%b-%Y %H:%M, um zu geben Fri 05-Oct-2018 19:55. Hier ist die Liste der Datumsformate stackoverflow.com/a/34778736/58678
hIpPy
8

Leider git log --date=localändert die Verwendung wie in den vorherigen Antworten erläutert das Ausgabeformat.

Um das Format wie gewünscht ( YYYY-MM-DD HH:mm) beizubehalten, musste ich Folgendes verwenden:

git log --date=iso-local

Das funktioniert aber nur mit Git 2.7 oder höher.

Fabio Marreco
quelle
2

jveermans Beitrag war wirklich hilfreich:

Wenn Sie das Git-Datum im Format JJJJ-MM-TT HH: MM: SS anzeigen möchten:

DATE=$(git log -n 1 --pretty=format:"%ad" --date=iso)
echo "Date: ${DATE::20}"

Für das Protokollformat konnte ich dies hinzufügen

[log]
date=format:%Y-%m-%d %H:%M:%S

zu meiner ~ / .gitconfig

Es war jedoch eine Tortur, das gleiche gut formatierte Datum und die gleiche Uhrzeit automatisch zu meinen Festschreibungsnachrichten hinzuzufügen. Ich fand nichts hilfreich, bis ich dies zur Datei .git / hooks / prepare-commit-msg hinzufügte:

DATE=$(git log -n 1 --pretty=format:"%ad" --date=iso)
echo "${DATE::20}" >> $1

Wenn Sie hauptsächlich die Desktop-App verwenden, ist es schön, wenn der genaue Zeitpunkt der Änderung in der Commit-Liste angezeigt wird!

Gibt es eine Möglichkeit, dies global zu gestalten, sodass ich nicht die Prepare-Commit-Msg-Datei jedes lokalen Repos bearbeiten muss?

papaJupe
quelle
2

Eine vollständige Befehlszeilenantwort:

TZ=GMT git show -s --format=%cd --date=iso-local
Kevin English
quelle
0

Wenn Sie das Git-Datum im Format JJJJ-MM-TT HH: MM: SS anzeigen möchten:

DATE = $ (git log -n 1 --pretty = format: "% ad" --date = iso)
echo "Date: $ {DATE :: 20}"

Jveerman
quelle