So konfigurieren Sie 'git log' so, dass 'Festschreibungsdatum' angezeigt wird

127

Wie kann ich konfigurieren git log, um commit dateanstelle von author dateanzuzeigen?

Michael
quelle
25
@Colleen Jedem Commit sind zwei Daten zugeordnet - AuthorDate und CommitDate ( git show --pretty=fuller HEADum ein Beispiel zu sehen). Für die lokale Entwicklung sind diese normalerweise gleich, aber für Patches, die per E-Mail oder über andere Mechanismen hinzugefügt wurden, können sie unterschiedlich sein, wobei das AuthorDate das Datum ist, an dem der Patch generiert wurde, und das CommitDate, als es tatsächlich auf das Repository angewendet wurde.
Twalberg

Antworten:

145

Es gibt verschiedene Möglichkeiten, das Datum hübsch auszudrucken . Am einfachsten ist es wahrscheinlich, nur eines der vorgebackenen --prettyFormate zu verwenden, z. B. git log --pretty=fullerwerden beide Daten angezeigt. Wenn Sie nur ein Datum anzeigen möchten, es jedoch zum Festschreibungsdatum festlegen möchten, können Sie es verwenden git log --format=<some stuff>. Alle zulässigen Codes zum Definieren des Formats sind in dokumentiert git help log. Das Commit Datum ein von %cd, %cD, %cr, %ctoder%ci , je nachdem , was Format , das Sie bevorzugen es in.

Wenn Sie dies häufig tun möchten, fügen Sie es in einen Alias ​​ein oder schreiben Sie ein Hilfsskript, um beim Tippen zu sparen.

Twalberg
quelle
53

Sie können das Festschreibungsdatum relativ verwenden --pretty=formatund verwenden %cr.

Beispielsweise:

$ git log --graph --pretty=format:'%C(auto)%h%d (%cr) %cn <%ce> %s'

Sie können in git einen Alias ​​definieren, um die Verwendung zu vereinfachen. Ich habe folgendes in meinem .gitconfig:

[alias]
# see `git help log` for detailed help.
#   %h: abbreviated commit hash
#   %d: ref names, like the --decorate option of git-log(1)
#   %cn: commiter name
#   %ce: committer email
#   %cr: committer date, relative
#   %ci: committer date, ISO 8601-like format
#   %an: author name
#   %ae: author email
#   %ar: author date, relative
#   %ai: author date, ISO 8601-like format
#   %s: subject
# my awesome git log replacement
lol  = log --graph --pretty=format:\"%C(auto)%h%d%Creset %C(cyan)(%cr)%Creset %C(green)%cn <%ce>%Creset %s\"
# same as above, but ISO date
lold = log --graph --pretty=format:\"%C(auto)%h%d%Creset %C(cyan)(%ci)%Creset %C(green)%cn <%ce>%Creset %s\"
# using build-in standards
lol2 = log --oneline --graph --decorate
# shows branches and their last commits
lol3 = log --all --graph --decorate --oneline --simplify-by-decoration

Unter Linux oder ähnlichen Systemen können Sie einfache Anführungszeichen 'anstelle von doppelten Anführungszeichen verwenden ":

[alias]
lol = log --graph --pretty=format:'%C(auto)%h%d%Creset %C(cyan)(%cr)%Creset %C(green)%cn <%ce>%Creset %s'

Führen Sie dazu einfach git loloder die anderen Varianten aus, um die hübsche Ausgabe zu sehen.

Hier ist die Ausgabe von git lol --simplify-by-decoration:

git lol Ausgabe

  • Es sieht gut aus. :) :)
  • lolist einfacher zu tippen als logund klingt auch besser.
    • Außerdem haben Sie Zugriff auf die regulären, git logwenn Sie es jemals brauchen.
  • Ihre Augen können Inhalte anhand der verschiedenen Farben schnell scannen.
  • Namen und E-Mails sind sehr nützlich für große Projekte / Organisationen mit vielen Mitwirkenden.
  • Verwenden Sie die Standardfarbe für Hash / Ref, da diese bereits ziemlich gut ist.

Hier ist die Ausgabe von git loldmit Datumsangaben im ISO-Format. Nützlich, um das genaue Datum und die Uhrzeit der Festschreibung anzuzeigen. Der Vorteil besteht darin, dass Sie die Zeitzone des Mitwirkenden leicht sehen können.

Geben Sie hier die Bildbeschreibung ein

Bearbeiten 2020-06 : Screenshots hinzugefügt. Aktualisiert, um %C(auto)(Auto / Standard-Färbung) für %h(Commit-Hash) und %d(Ref-Namen) zu verwenden. Hinzugefügt %cn(Commitername) zusätzlich zur E-Mail.

Raychi
quelle
1
Ich erhalte einen Analysefehler: git log --graph --pretty=format:\"%C(yellow)%h%Creset%C(cyan)%C(bold)%d%Creset %C(cyan)(%cr)%Creset %C(green)%ce%Creset %s\" bash: Syntaxfehler in der Nähe eines unerwarteten Tokens `('
frakman1
2
@ frakman1 - Sie müssen die "s entziehen, damit die obige Zeile im Terminal ausgeführt wird
Stites
2
Korrigierte Zeile: git log --graph --pretty = Format: "% C (gelb)% h% Kreset% C (cyan)% C (fett)% d% Kreset% C (cyan) (% cr)% Kreset% C (grün)% ce% Creset% s "
RedSands
1

Ich bevorzuge dieses Format, enthält keinen Autorennamen und das tatsächliche Datum für das Festschreiben.

git log --graph --pretty=format:"%C(yellow)%h%x09%Creset%C(cyan)%C(bold)%ad%Creset  %C(green)%Creset %s" --date=short
Patrick Steil
quelle