750 Stimmen

Die kürzestmögliche Ausgabe von git log mit Autor und Datum

Wie kann ich eine Git-Protokollausgabe mit (mindestens) diesen Informationen anzeigen:

* author
* commit date
* change

Ich möchte, dass es auf eine Zeile pro Protokolleintrag komprimiert wird. Was ist das kürzestmögliche Format dafür?

(versucht --format=oneline aber das Datum wird nicht angezeigt)

1105voto

Jesper Rønn-Jensen Punkte 98301
git log --pretty=format:"%h%x09%an%x09%ad%x09%s"

erledigt den Job. Diese Ausgaben:

  fbc3503 mads    Thu Dec 4 07:43:27 2008 +0000   show mobile if phone is null...   
  ec36490 jesper  Wed Nov 26 05:41:37 2008 +0000  Cleanup after [942]: Using timezon
  ae62afd tobias  Tue Nov 25 21:42:55 2008 +0000  Fixed #67 by adding time zone supp
  164be7e mads    Tue Nov 25 19:56:43 2008 +0000  fixed tests, and a 'unending appoi
  93f1526 jesper  Tue Nov 25 09:45:56 2008 +0000  adding time.ZONE.now as time zone 
  2f0f8c1 tobias  Tue Nov 25 03:07:02 2008 +0000  Timezone configured in environment
  a33c1dc jesper  Tue Nov 25 01:26:18 2008 +0000  updated to most recent will_pagina

Inspiriert durch Stackoverflow-Frage: "git log output like svn ls -v" habe ich herausgefunden, dass ich genau die Parameter hinzufügen kann, die ich brauche.

Um das Datum zu verkürzen (ohne die Uhrzeit anzuzeigen), verwenden Sie --date=short

Falls Sie neugierig sind, was die verschiedenen Optionen sind:
%h = abgekürzter Commit-Hash
%x09 = Tabulator (Zeichen für Code 9)
%an = Name des Autors
%ad = Autorendatum (Format respektiert die Option --date=)
%s = Thema
Von kernel.org/pub/software/scm/git/docs/git-log.html (Abschnitt PRETTY FORMATS) durch einen Kommentar von Vivek.

268voto

andsens Punkte 6236

Ich verwende diese beiden .gitconfig-Einstellungen:

[log]
  date = relative
[format]
  pretty = format:%h %Cblue%ad%Creset %ae %Cgreen%s%Creset

%ad ist das Datum des Autors, das überschrieben werden kann durch --date oder die in der Stanza [log] in .gitconfig angegebene Option. Ich mag das relative Datum, weil es ein unmittelbares Gefühl dafür vermittelt, wann etwas übertragen wurde. Die Ausgabe sieht so aus:

6c3e1a2 2 hours ago you@me.com lsof is a dependency now.
0754f18 11 hours ago you@me.com Properly unmount, so detaching works.
336a3ac 13 hours ago you@me.com Show ami registration command if auto register fails
be2ad45 17 hours ago you@me.com Fixes #6. Sao Paolo region is included as well.
5aed68e 17 hours ago you@me.com Shorten while loops

Das alles ist natürlich in Farbe, so dass man die verschiedenen Teile eines Baumstamms leicht unterscheiden kann. Außerdem ist dies die Standardeinstellung, wenn Sie Folgendes eingeben git log wegen des Abschnitts [format].

2014 UPDATE: Da git jetzt padding unterstützt, habe ich eine nette Ergänzung zur obigen Version:

pretty = format:%C(yellow)%h %Cblue%>(12)%ad %Cgreen%<(7)%aN%Cred%d %Creset%s

Dadurch werden die relativen Daten rechtsbündig und die Namen der Committer linksbündig angeordnet, so dass ein spaltenartiges Aussehen entsteht.

Bildschirmfoto

  ss#1

AKTUALISIERUNG 2016: Da die GPG-Signatur von Commits immer beliebter wird, dachte ich, ich aktualisiere diesen Beitrag mit einer Version, die eine Signaturprüfung enthält (im Screenshot ist das der magentafarbene Buchstabe direkt nach dem Commit). Eine kurze Erklärung des Flags:

%G?: zeigt "G" für eine gute (gültige) Signatur, "B" für eine schlechte Signatur, "U" für eine gute Signatur mit unbekannter Gültigkeit und "N" für keine Signatur

Weitere Änderungen sind:

  • Farben werden nun entfernt, wenn die Ausgabe auf etwas anderes als das tty erfolgt (was für grepping usw. nützlich ist)
  • git log -g enthält jetzt den Reflog-Selektor.
  • Sparen Sie 2 Parens bei refnames und setzen Sie sie ans Ende (um die Spaltenausrichtung beizubehalten)
  • Schneiden Sie relative Daten ab, wenn sie zu lang sind (z. B. 3 years, 4.. )
  • Kürzen Sie die Namen von Commitern (könnte für manche Leute etwas kurz sein, ändern Sie einfach die %<(7,trunc) oder sehen Sie sich die git .mailmap-Funktion zur Verkürzung von Kommitatorennamen)

Hier ist die Konfiguration:

pretty = format:%C(auto,yellow)%h%C(auto,magenta)% G? %C(auto,blue)%>(12,trunc)%ad %C(auto,green)%<(7,trunc)%aN%C(auto,reset)%s%C(auto,red)% gD% D

Alles in allem wird die Spaltenausrichtung nun viel besser beibehalten, allerdings auf Kosten einiger (hoffentlich) nutzloser Zeichen. Fühlen Sie sich frei zu bearbeiten, wenn Sie irgendwelche Verbesserungen haben, ich würde gerne die Farbe der Nachricht davon abhängig machen, ob eine Übergabe signiert ist, aber es scheint nicht so, als ob das momentan möglich ist.

Bildschirmfoto

Screenshot of git log

147voto

Sie können diese gerne verwenden:

git log --pretty="%C(Yellow)%h  %C(reset)%ad (%C(Green)%cr%C(reset))%x09 %C(Cyan)%an: %C(reset)%s" -7

Beachten Sie die -7 am Ende, um nur die letzten 7 Einträge anzuzeigen.

Sehen Sie:

enter image description here

129voto

knittl Punkte 214432
git log --pretty=format:"%H %an %ad"

utiliser --date= um ein Datumsformat einzustellen

git log --pretty=format:"%H %an %ad" --date=short

112voto

Wenfang Du Punkte 5223

enter image description here
El <code>-10</code> am Ende sollen die letzten 10 Übertragungen angezeigt werden.

Vordefinierte Git-Alias verwenden ( hs - kurz für Geschichte):

git hs

Einmal auf Befehl erstellt:

git config --global alias.hs "log --pretty='%C(yellow)%h %C(cyan)%cd %Cblue%aN%C(auto)%d %Creset%s' --graph --date=relative --date-order"

%h = abgekürzter Commit-Hash
%cd = Committer-Datum ( Format beachtet --date= Option )
%aN = Name des Autors ( respektiert .mailmap )
%d = Referenznamen
%s = Thema

P.S.: Seit Git v2.13.0, --decorate ist standardmäßig aktiviert.

Referenzen:

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X