Ich habe ein einfaches Test-Repository mit nur mehreren Commits und möchte das nach Datum und Uhrzeit gefilterte Protokoll anzeigen:
$ git log --author = "automatix" --since = "2013-01-30" --pretty - test Commit ea0719bef142659fa561c9d040b2120012ed0184 Datum: Do 31 Jan 02:03:12 2013 +0100 Commit ab4a8387bc4d9bdb4f67212df77eb1fc3d8b6304 Datum: Do 31 Jan 01:59:11 2013 +0100 Commit a0b027beba2cd03571bb9475b9db9542f8efe990 Datum: Do 31. Januar 01:50:38 2013 +0100 Commit add77c8fe2ba9254c11b98e14facede3420dc51c Datum: Do 31. Januar 01:48:34 2013 +0100 Commit e6e323c05d37c74fcabeb9186b95c0d49b862e6f Datum: Do 31. Januar 01:46:27 2013 +0100 Commit 8c286391e54d3fc1e210950b1320fd6f013a8f84 Datum: Do 31 Jan 01:41:27 2013 +0100 Commit 9c880595e57f717383796fa2940f41f0f42f7e2a Datum: Do 31. Januar 01:38:17 2013 +0100 Commit a95527f36a533e1ecba1aadceea31a9dcbe1a8db Datum: Do 31 Jan 01:30:00 2013 +0100
Das erste ausgewählte Commit stammt a95527f36a533e1ecba1aadceea31a9dcbe1a8db
von 2013-01-30 01:30:00
. Es werden 8 Commits ausgewählt:
$ git log --author = "automatix" --since = "2013-01-30" --format = oneline - test | Toilette 8 34 498
OK. Jetzt wähle ich seit 2013-01-31
:
$ git log --author = "automatix" --since = "2013-01-31" --format = oneline - test | Toilette 0 0 0
Was? Ok, das sollte bedeuten, dass die since
Regel umfasst nicht die Commits des Startdatums. Richtig?
Aber lass uns weitermachen:
$ git log --author = "automatix" --since = "2013-01-31 01:30:00" --pretty - test Commit ea0719bef142659fa561c9d040b2120012ed0184 Datum: Do 31 Jan 02:03:12 2013 +0100 Commit ab4a8387bc4d9bdb4f67212df77eb1fc3d8b6304 Datum: Do 31 Jan 01:59:11 2013 +0100 Commit a0b027beba2cd03571bb9475b9db9542f8efe990 Datum: Do 31. Januar 01:50:38 2013 +0100 Commit add77c8fe2ba9254c11b98e14facede3420dc51c Datum: Do 31. Januar 01:48:34 2013 +0100 Commit e6e323c05d37c74fcabeb9186b95c0d49b862e6f Datum: Do 31. Januar 01:46:27 2013 +0100 Commit 8c286391e54d3fc1e210950b1320fd6f013a8f84 Datum: Do 31 Jan 01:41:27 2013 +0100 Commit 9c880595e57f717383796fa2940f41f0f42f7e2a Datum: Do 31. Januar 01:38:17 2013 +0100 Commit a95527f36a533e1ecba1aadceea31a9dcbe1a8db Datum: Do 31 Jan 01:30:00 2013 +0100
$ git log --author = "automatix" --since = "2013-01-31 01:30:00" --format = oneline - test | Toilette 8 34 498
Wenn ich jetzt auch die Startzeit schreibe, sind die Festschreibungen der Startzeit enthalten .
Ich verstehe die Logik nicht. Kann jemand erklären, warum es so seltsam funktioniert?
Vielen Dank
git log --author="automatix" --since="2013-01-31 01:30" --pretty -- test
sollte Inhalt 7 festlegt. Aber es enthält 8.git log --author="automatix" --since="2013-01-31 01:30" --format=oneline -- test | wc
=> 8 34 498Antworten:
Falls es jemand anderem hilft, der hier landet wie ich, habe ich nach einigem Nachforschen herausgefunden, dass die Verwendung des ISO8601-Formats auch funktioniert:
Dies gibt Ihnen Präzision bis zur Sekunde. Hinweis: Sie können auch verwenden:
etc.
Das erklärt natürlich nicht, "warum es so seltsam funktioniert". Es hat jedoch sicherlich das Problem für mich gelöst.
BEARBEITEN:
Nach ein wenig mehr Recherche fand ich heraus, "warum es so seltsam funktioniert":
Wenn Sie kein Datumsformat angeben, wird für das Git-Protokoll standardmäßig entweder die Zeitzone des Autors oder das Festschreiben von Daten verwendet , was für ein konsistentes Verhalten bedeutet um Ihr Datumsformat explizit zu deklarieren mit:
Wenn Sie keine Zeit angeben, wird standardmäßig Ihre Ortszeit verwendet, zu der Sie den Befehl ausgeführt haben.
Lange Rede, kurzer Sinn, spezifisch zu sein sollte das Problem lösen:
Außerdem können Sie das Standard-Datumsformat mit dem folgenden Befehl dauerhaft festlegen:
Sie können einen dieser Werte verwenden:
(relative|local|default|iso|rfc|short|raw)
quelle