Wie man `git log` dazu bringt, nur das Commit-Datum anzuzeigen, sonst nichts

Lesezeit: 5 Minuten

Wie man git log dazu bringt nur das Commit Datum anzuzeigen
Gabriel Staples

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 commitverwenden:

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?

  • Art verwandt: So konfigurieren Sie ‘git log’, um ‘commit date’ anzuzeigen

    – Gabriel Staples

    7. März um 17:18 Uhr


1647157091 225 Wie man git log dazu bringt nur das Commit Datum anzuzeigen
TTT

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

  • Also, wenn jemand zum ersten Mal eintippt git commit für einen brandneuen Satz von Änderungen und ein Zeitstempel wird der Commit-Nachricht hinzugefügt, wird dies als das “Commiter”-Datum oder das “Autor”-Datum oder beides betrachtet?

    – Gabriel Staples

    7. März um 18:21 Uhr


  • @GabrielStaples In diesem Fall wären beide Daten gleich. Sie können das aktuelle Protokoll anzeigen, um beide anzuzeigen und sich ein Bild davon zu machen, wann sie sich unterscheiden, indem Sie Folgendes verwenden: git log --pretty=fuller. Genauso wichtig wie diese unterschiedlichen Daten ist, dass die Leute, die sie machen, auch unterschiedlich sein können!

    – TTT

    7. März um 18:25 Uhr


Wie man git log dazu bringt nur das Commit Datum anzuzeigen
Gabriel Staples

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 logsuchen 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=%adoben, 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

  1. $(git rev-list --max-parents=0 HEAD) Ruft den Commit-Hash des ersten Commit ab.
    1. Siehe meine Antwort hier: How to show first commit by ‘git log’?
  2. grep 'Date:' findet nur Zeilen mit dem Text Date: in ihnen.
  3. grep -o ' .*$' streift die ab Date: Teil, indem Sie nur die 3 Leerzeichen und den darauf folgenden Text abgleichen.
    1. Für die -o Teil, siehe: Kann grep nur Wörter anzeigen, die dem Suchmuster entsprechen?
  4. grep -o '[^\r\n\t\f\v ].*$' entfernt die vorangehenden Leerzeichen, indem nur Nicht-Leerzeichen abgeglichen werden.
    1. Siehe meine Antwort hier: Unix & Linux: Alle regulären Ausdrücke, die keine Leerzeichen sind
  5. -1 in git log bedeutet: “nur 1 Commit”
  6. HEAD ist der aktuell ausgecheckte Commit-Hash

  • Ich bin verwirrt. Willst du nicht einfach git log --format=%cd ?

    – TTT

    7. März um 18:06 Uhr


  • Außerdem lautet Ihre Frage “Commit” -Datum, von dem ich annahm, dass Sie “Commiter” -Datum meinten. Sieht so aus, als ob diese Antwort das “Autor” -Datum wollte.

    – TTT

    7. März um 18:13 Uhr

  • @TTT, zu deiner ersten Frage: ja, danke. Zu Ihrer 2. Frage: Ich verstehe den Unterschied nicht: Was ist der Unterschied zwischen Committer-Datum und Autor-Datum? Wann können sie abweichen? Warum? Fühlen Sie sich frei, das zu Ihrer Antwort hinzuzufügen.

    – Gabriel Staples

    7. März um 18:17 Uhr

  • Ich habe meine Antwort aktualisiert, um die Unterschiede zu erklären.

    – TTT

    7. März um 18:21 Uhr

996440cookie-checkWie man `git log` dazu bringt, nur das Commit-Datum anzuzeigen, sonst nichts

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy