Wenn Sie git log --decorate --pretty=oneline
Ausführen, enthält die Ausgabe Einträge wie (HEAD, refs/published/master, master)
Mit Farbgebung.
Ich habe auch die folgenden in meiner gitconfig:
[color "branch"]
current = yellow reverse
local = yellow
remote = green
Wie replizieren Sie diese Farben, wenn Sie ein benutzerdefiniertes Format wie das folgende ausführen?
git log --decorate --stat --graph --pretty=format:"%d %Cgreen%h%Creset (%ar - %Cred%an%Creset), %s%n"
Ab Version 1.8.3 (24. Mai 2013) können Sie %C(auto)
verwenden, um %d
In der Formatzeichenfolge von git log
Zu dekorieren.
Aus dem Versionshinweise :
* "git log --format" specifier learned %C(auto) token that tells Git
to use color when interpolating %d (decoration), %h (short commit
object name), etc. for terminal output.)
Das git log --decorate
Wird standardmäßig gesetzt:
und kann durch color.decorate
config geändert werden.
Aber das git log --format
bietet keine Möglichkeit, speziell den Zweig HEAD
oder remotes oder anzuzeigen: Alle drei werden durch %d
angezeigt, wobei eine Farbe möglich ist.
Update Mai 2013, wie nten erwähnt von Elad Shahar (aktualisiert), bietet Git 1.8.3 eine weitere Option:
git log –format
Hat jetzt einen%C(auto)
Token, der Git anweist, beim Auflösen von%d
(Dekoration),%h
(Kurzer Commit-Objektname) usw. Farbe zu verwenden. für Terminalausgang.
In diesem Atlassian-Blogpost Kommentar wird darauf hingewiesen, dass diese Funktion Teil mehrerer anderer ist, die sich auf Format (git rebase
, git count-objects
) Und Farben (git branch -vv
) Konzentrieren.
Dies kommt zum vorherigen auto,reset
Von 1.8.2 hinzu, das Farben automatisch deaktiviert, wenn die Ausgabe nicht für ein Terminal1 verwendet wird
%C(auto,blue)Hello%C(auto,reset)
Hinweis: Mit git 2.4+ (Q2 2015) können Sie die Farben für Zweignamen besser zurücksetzen.
Siehe commit 5ee8758 von Junio C Hamano (gitster
) :
log --decorate
: Keine "Commit" -Farbe in das nächste Objekt leckenIn "
git log --decorate
" Sehen Sie den Commit-Header wie folgt:
commit ... (HEAD, jc/decorate-leaky-separator-color)
wobei "
commit ... (
" incolor.diff.commit
, "HEAD
" incolor.decorate.head
, ",
" incolor.diff.commit
geschrieben ist Geben Sie den Zweignamen incolor.decorate.branch
ein und schließen Sie dann ")
" incolor.diff.commit
.Wenn Sie den Namen HEAD und den Namen der lokalen Verzweigung in derselben Farbe wie der Nachrichtentext zeichnen möchten (möglicherweise, weil Cyan und Grün auf einem Schwarz-Weiß-Terminal zu schwach sind, um lesbar zu sein), du würdest nicht sagen müssen wollen
[color "decorate"]
head = black
branch = black
weil Sie nicht in der Lage wären, dieselbe Konfiguration auf einem Weiß-auf-Schwarz-Terminal wiederzuverwenden. Sie würden naiv erwarten
[color "decorate"]
head = normal
branch = normal
zu arbeiten, aber leider nicht.
Der String "HEAD
" und der Zweigname werden in derselben Farbe wie die öffnende Klammer oder das Komma zwischen den Dekorationselementen gezeichnet.
Dies liegt daran, dass der Code vergisst, die Farbe zurückzusetzen, nachdem das "Präfix" in seiner eigenen Farbe gedruckt wurde.
Beachten Sie, dass Git 2.5 (Q2 2015) einen Fehler behebt:
Siehe commit 429ad2 von Junio C Hamano (gitster
, 13. Mai 2015.
(Zusammengeführt von Junio C Hamano - gitster
- in Commit fd7078 , 22. Mai 2015)
log
: Dekorationsnamen nicht zu früh kürzenDie Verbesserung "
log --decorate
" In Git 2.4, die das Festschreiben an der Spitze des aktuellen Zweigs anzeigt, z. "HEAD -> master
" Funktionierte nicht mit --decorate = full.
Git 2.9.x + (3. Quartal 2016) behebt einen weiteren Fehler und Ehre color=auto
Für %C(auto)
Git 2.10.2 (Okt. 2016) behebt andere Fehler mit commit 82b83da (29. September 2016) und commit c99ad27 (17. September 2016) von René Scharfe) (``) .
(Zusammengeführt von Junio C Hamano - gitster
- in Festschreiben 76796d4 , 28. Oktober 2016)
pretty
: Vermeiden Sie das Hinzufügen von Zurücksetzen für%C(auto)
, wenn die Ausgabe leer istWir geben eine Escape-Sequenz zum Zurücksetzen von Farbe und Attribut für
%C(auto)
aus, um sicherzustellen, dass die automatische Färbung wie beabsichtigt angezeigt wird.
Unterbrechen Sie dies, wenn der Ausgabestring leer ist , dh wenn%C(auto)
am Anfang des Formatierungsstrings erscheint , weil dann kein Reset nötig ist und wir ein paar Bytes in der Ausgabe sparen.
pretty
: lass%C(auto)
alle Attribute zurücksetzenSetzen Sie die Farben zurück nd Attribute auf
%C(auto)
, um die vollständige automatische Kontrolle über sie zu ermöglichen. ansonsten könnten Attribute wie fett oder umgekehrt von früheren%C
- Platzhaltern noch wirksam sein.
Setzen Sie sie in Klammern:
%C(...): color specification, as described in color.branch.* config option
Also würde %C(yellow reverse)
funktionieren.
Die Konfigurationsoption log.decorate
kann Standarddekorationen in Protokollen aktivieren/deaktivieren.
git config --global log.decorate full
Sobald dies erledigt ist, können Sie color.decorate.*
um mit den farben zu spielen
Einige möchten dies möglicherweise verwenden: %C(colorname)
Dies muss die Farbkonfiguration nicht ändern.
Beispiel: Den Autorennamen gelb färben
--pretty=format:"%C(yellow)%an%Creset"
Normale ANSI-Farben sollten funktionieren https://en.wikipedia.org/wiki/ANSI_escape_code