Ich möchte nur einen kurzen Blick auf die Geschichte eines Projekts werfen, indem ich habe git log
Show nur das Commit-Datum, sonst nichts. Wie können wir das am besten tun?
Update: Es stellt sich heraus, dass ich tatsächlich nach dem gefragt habe Autor Datum, das durch angezeigt wird git log
. Zu sehen Committer Datum auch, das unterschiedlich sein kann, laufen git log --pretty=fuller
.
Siehe auch hier: Warum unterscheidet sich git AuthorDate von CommitDate?
Um zu verdeutlichen, dass es unterschiedliche Daten gibt: um eine festzulegen Autor Datum beim Laufen git commit
verwenden:
git commit ---date "<date>"
Auch die einzustellen Committer Datum, müssten Sie Folgendes tun:
GIT_COMMITTER_DATE="<date>" git commit --date "<date>"
Siehe hier: Wie kann man den Zeitstempel eines alten Commits in Git ändern?
Wenn Sie nur die sehen möchten Committer date (das Datum, an dem der Commit mit seiner aktuellen ID geschrieben wurde):
git log --format=%cd
Wenn Sie nur die sehen möchten Autor date (das Datum, an dem der Commit ursprünglich geschrieben wurde, kann sich jedoch vom Committer-Datum unterscheiden, wenn der Commit geändert, umbasiert, aussortiert usw. wurde, was dazu führte, dass er eine neue Commit-ID erhielt):
git log --format=%ad
Weitere Informationen zum Unterschied zwischen Committer- und Autorendaten: Why git AuthorDate is different from CommitDate?.
Datumsangaben können auf unterschiedliche Weise angezeigt werden. Hier ist eine Liste der integrierten Optionen.
Wenn Sie keinen Pager verwenden möchten, fügen Sie einfach hinzu --no-pager
nach dem git
Befehl, etwa so:
git --no-pager log --format=%ad
1. Der einfache Weg:
(Diese Antwort war die erste Antwort; dieser Teil wurde hinzugefügt, nachdem @TTT den Kommentar unten geschrieben hatte, der mir diesen einfacheren Weg beigebracht hat).
# ad = author date
git log --format=%ad
# cd = committer date
git log --format=%cd
%cd
steht anscheinend für “Committer Date”. Vergleichen Sie das mit %ad
, was für “Author Date” steht. (Ich bin mir nicht sicher, was die Unterschiede sind oder wie oder warum sich diese Daten unterscheiden würden).
Danke, @TTT. Jetzt, wo ich sehe, wie das funktioniert, habe ich die entsprechenden Format-String-Abschnitte in der Dokumentation gefunden:
Machen man git log
suchen Sie dann nach dem regulären Ausdruck format:<format-string>
durch Drücken / und das eintippen und drücken Eingeben. Auf der Suche nach %cd
springt auch nach unten zu diesem Abschnitt.
2. Der harte Weg (mein erster Versuch):
Getestet auf Linux Ubuntu:
Eine Möglichkeit, das Autordatum zu erhalten (--format=%ad
oben, wie ich jetzt nachträglich weiß) besteht darin, die Ausgabe von zu filtern git log
durch grep
. Hier ist die Antwort für git log HEAD
. Ersetzen HEAD
mit einem beliebigen Branch-Namen oder Commit-Hash, den Sie möchten.
Siehe nur die Daten für alle Commits:
git log HEAD | grep 'Date:' | grep -o ' .*$' | grep -o '[^\r\n\t\f\v ].*$'
Beispielausgabe:
Sun Apr 26 19:17:49 2020 -0700
Sun Apr 26 16:51:21 2020 -0700
Sun Apr 26 15:35:16 2020 -0700
Sat Apr 25 23:21:37 2020 -0700
Sat Apr 25 23:12:07 2020 -0700
Sat Apr 25 23:06:44 2020 -0700
Tue Apr 14 23:02:34 2020 -0700
Sun Apr 5 23:26:20 2020 -0700
Sun Apr 5 23:20:34 2020 -0700
Sun Apr 5 18:08:44 2020 -0700
Sun Apr 5 17:56:08 2020 -0700
Sun Apr 5 10:06:04 2020 -0700
Sat Apr 4 20:58:33 2020 -0700
Sat Mar 21 14:38:53 2020 -0700
Thu Mar 19 20:37:27 2020 -0700
Thu Mar 19 18:16:55 2020 -0700
Thu Mar 19 18:01:53 2020 -0700
Oder, um nur die zu sehen nur das jüngste Datumaddieren -1
:
git log -1 HEAD | grep 'Date:' | grep -o ' .*$' | grep -o '[^\r\n\t\f\v ].*$'
Ausgabe:
Sun Apr 26 19:17:49 2020 -0700
… oder zu sehen nur der älteste Datumverwenden $(git rev-list --max-parents=0 HEAD)
anstatt HEAD
(wieder ersetzen HEAD
in diesem Befehl mit dem entsprechenden Zweig oder Commit, den Sie anzeigen möchten):
git log -1 $(git rev-list --max-parents=0 HEAD) | grep 'Date:' \
| grep -o ' .*$' | grep -o '[^\r\n\t\f\v ].*$'
Ausgabe:
Thu Mar 19 18:01:53 2020 -0700
Erläuterung
$(git rev-list --max-parents=0 HEAD)
Ruft den Commit-Hash des ersten Commit ab.
- Siehe meine Antwort hier: How to show first commit by ‘git log’?
grep 'Date:'
findet nur Zeilen mit dem Text Date:
in ihnen.
grep -o ' .*$'
streift die ab Date:
Teil, indem Sie nur die 3 Leerzeichen und den darauf folgenden Text abgleichen.
- Für die
-o
Teil, siehe: Kann grep nur Wörter anzeigen, die dem Suchmuster entsprechen?
grep -o '[^\r\n\t\f\v ].*$'
entfernt die vorangehenden Leerzeichen, indem nur Nicht-Leerzeichen abgeglichen werden.
- Siehe meine Antwort hier: Unix & Linux: Alle regulären Ausdrücke, die keine Leerzeichen sind
-1
in git log
bedeutet: “nur 1 Commit”
HEAD
ist der aktuell ausgecheckte Commit-Hash
Art verwandt: So konfigurieren Sie ‘git log’, um ‘commit date’ anzuzeigen
– Gabriel Staples
7. März um 17:18 Uhr