Git hübsche Formatfarben

80

Ich versuche, hübsche Formatfarben für Git einzurichten. Soweit ich weiß, erkennt Version 1.6.0 nur Rot, Grün und Blau.

$ git log --pretty=format:"%Credred%Creset %Cgreengreen%Creset %Cyellowyellow%Creset %Cblueblue%Creset %Cmagentamagenta%Creset %Ccyancyan%Creset %Cwhitewhite%Creset"
red green %Cyellowyellow%Creset blue %Cmagentamagenta %Ccyancyan %Cwhitewhite

Außerdem funktioniert keine der Farben mit dem in Klammern gesetzten Farbformat.

Gibt es eine Möglichkeit, die verfügbaren hübschen Formatfarben für Git aufzulisten?

Leider ist dies auf einem älteren SCO OpenServer 5.0.7-Computer und die letzte von SCO Skunkworks veröffentlichte Version von Git war 1.6.0.3.

James Allman
quelle
1
Wenn Ihre Plattform veraltet ist, warum laden Sie nicht das neueste git 1.8.x von git-scm.com herunter und kompilieren Sie es selbst? Dann würde es alle neuesten Funktionen unterstützen.
MVP
@mvp Nun, wie Sie sagten, ist die Plattform veraltet - was bedeutet, dass keine GNU-Build-Umgebung vorhanden ist. Ich bereite den vorhandenen Anwendungsquellcode für die Migration auf Linux vor.
James Allman
Beachten Sie, dass Git 2.3.0 (Februar 2015) 24-Bit-Farbwerte und eine bessere Verwaltung der Farbattribute (fett, unterstrichen, ...) ermöglicht. Siehe meine Antwort unten
VonC
Git 2.26 (Q1 2020) fügt das Attribut "hell" hinzu, um helle Aixtermfarben zu unterstützen. Siehe meine bearbeitete Antwort unten
VonC

Antworten:

142

Ich habe nicht eine alte Version von habe , gitum sicherzustellen , dass die anderen Farben als red, blueund greenunterstützt werden.

Obwohl, eine Sache , die ich auch mit den neueren Versionen von bemerkt git(wie 1.7.10 I verwenden) ist , dass die anderen Farben als red, greenund blueNotwendigkeit, in Klammern zu sein (). Für red, greenund bluesind die Klammern optional.

Probieren Sie es aus:

git log --pretty=format:"%Credred%Creset %Cgreengreen%Creset %C(Yellow)yellow%Creset %Cblueblue%Creset %C(magenta)magenta%Creset %C(cyan)cyan%Creset %C(white)white%Creset"

Die Liste der Farben, die mir zumindest bekannt sind, ist:

normal
black
red
green
yellow
blue
magenta
cyan
white

Es kann mit einem dieser Attribute kombiniert werden:

bold
dim
ul
blink
reverse
italic
strike
bright  # (Git 2.26, Q1 2020, example: brightred)

Wenn Sie versuchen, Farben mithilfe von zu ändern, .gitconfigsollten Sie in der Lage sein, zwei Farben anzugeben - Vordergrund und Hintergrund, und Sie können sie mit einem Attribut kombinieren.

Tuxdude
quelle
Ich glaube, Sie haben Recht damit, dass nur die Primärfarben unterstützt werden. Das Farbformat in Klammern funktioniert in dieser Version (1.6.0.3) überhaupt nicht.
James Allman
16
Raum getrennter Vordergrund, Hintergrund & Attribute wie dieses% C (rot grün fett)
HexInteractive
Es gibt mindestens zwei weitere Attribute: Kursiv und Strike, wie im Handbuch hier beschrieben: git-scm.com/docs/git-config und aus Gründen der Vollständigkeit.
Anfrage
1
@onemorequestion Kein Problem. Ich habe die Antwort entsprechend bearbeitet. Ihre andere Antwort ( stackoverflow.com/a/61487052/6309 ) hat mir übrigens sehr gut gefallen .
VonC
38

Git 2.3.0 (Februar 2015) erlaubt (danke an Jeff Kink ( peff) ):


parse_color: unterstützt 24-Bit-RGB-Werte

Einige Terminals (wie XTerm) ermöglichen vollständige 24-Bit-RGB-Farbspezifikationen unter Verwendung einer Erweiterung des regulären ANSI-Farbschemas.
Lassen Sie Benutzer Hex-RGB-Farben angeben, um die wichtige Funktion von pinkfarbenen Ref-Dekorationen zu aktivieren :

git log --format="%h%C(#ff69b4)%d%C(reset) %s"

  • eine bessere Verwaltung der Farbattribute:

parse_color: " no$foo" erkennen, um das $fooAttribut zu löschen

Sie können ANSI-Textattribute wie "Umkehren" aktivieren, indem Sie "Umkehren" in Ihre Farbspezifikation einfügen. Sie können jedoch nicht darum bitten, den Rückwärtsgang auszuschalten.

In häufigen Fällen spielt dies keine Rolle. Sie würden "Rückwärts" am Anfang eines farbigen Abschnitts aktivieren und dann alle Attribute mit einem "Zurücksetzen" löschen.

Möglicherweise möchten Sie jedoch einige Attribute aktivieren und andere dann selektiv deaktivieren. Zum Beispiel:

git log --format="%C(bold ul yellow)%h%C(noul) %s"

unterstreicht nur den Hash, ohne dass der Rest der Attribute neu angegeben werden muss.

Dies kann auch Programmen von Drittanbietern helfen contrib/diff-highlight, die bestimmte Attribute ein- und ausschalten möchten, ohne die vorhandene Farbgebung zu stören.

Beachten Sie, dass einige Attributspezifikationen wahrscheinlich unsinnig sind (z. B. " bold nobold"). Wir machen uns nicht die Mühe, solche Konstrukte zu kennzeichnen, sondern lassen sie vom Terminal sortieren.


Mit Git 2.26 (Q1 2020) lernten die 7 Grundfarben die helleren Gegenstücke (zB " brightred") .

Siehe Commit c444f03 , Commit 1751b09 , Commit 4a28eb0 (21. Januar 2020) von Eyal Soha (``) .
(Zusammengeführt von Junio ​​C Hamano - gitster- in Commit 87f17d7 , 25. Februar 2020)

color.c: unterstützen helle aixterm Farben

Unterzeichnet von: Eyal Soha

Diese Farben sind die hellen Varianten der 3-Bit-Farben.

Anstelle des Bereichs 30-37 für den Vordergrund und des Bereichs 40-47 für den Hintergrund leben sie im Bereich 90-97 bzw. 100-107.

Die git configDokumentation enthält jetzt:

Die Grundfarben akzeptiert sind normal, black, red, green, yellow, blue, magenta, cyanund white.
Die erste angegebene Farbe ist der Vordergrund; Der zweite ist der Hintergrund.

Alle Grundfarben außer normalhaben eine helle Variante, die durch Präfixieren der Farbe brightwie angegeben werden kann brightred.

VonC
quelle
Siehe auch stackoverflow.com/a/12798205/6309 : Git 2.9.1 unterstützt zwei neue Attribute: Kursiv und Strike.
VonC
2
Wissen Sie, wie Sie die RGB-Farben in einen Git-Alias ​​einfügen können? #ff69b4funktioniert auf der Kommandozeile aber nicht in einem Alias, weil #ein Kommentar beginnt
Tim Malone
@TimMalone Ich habe es noch nicht getestet, aber auf der Konfigurations-Manpage steht "Führende Leerzeichen nach dem Namen =, der Rest der Zeile nach dem ersten Kommentarzeichen #oder ;und nachfolgende Leerzeichen der Zeile werden verworfen, sofern sie nicht in doppelte Anführungszeichen gesetzt sind . "
VonC
1
@ TimMalone Setzen Sie den gesamten Alias ​​in "-quotes und dann #wird das nicht besonders.
Tom Hale
@VonC, ich bekomme seltsame Zeichen, wenn ich diese git logBefehlsausgaben an einen Text oder Clip weitergebe. Es sieht so aus, als ob dies passiert, wenn Farben und Attribute mit verwendet werden --format. Irgendeine Idee warum oder das Problem beheben?
HPPy
7

Teile mein Git-Protokollformat:

$ git log --graph --pretty=format:'%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) %C(cyan)<%an>%Creset' --abbrev-commit

Sie können ~ / .gitconfig auch einen Alias hinzufügen :

[alias]
    logs  = log --graph --pretty=format:'%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) %C(cyan)<%an>%Creset' --abbrev-commit

Dann können Sie den Alias ​​verwenden, wie Sie ihn definiert haben ~/.gitconfig.

$ git logs
Xiaofei HAN
quelle
7
Die Frage ist, wie man die hübschen Formatfarben von git herausfindet.
Rapnar
4

Ich verwende Ubuntu 18.04 und konnte die Vorschläge von Xiaofei HAN verwenden.

Für Anfänger, die versuchen, dies zu vervollständigen, hatte ich das beste Glück, indem ich die .gitconfig bearbeitete.

nano ~/.gitconfig

Fügen Sie den [Alias] -Block von oben unter dem vorhandenen Text ein

STRG + O (zum Ausschreiben) + STRG + X (zum Schließen von Nano)

Danach sehen Sie die hübschen Farben, die Sie verwenden können

git logs

mit

'Git Log' erhalten Sie die Ansicht ohne die Farben,

Gleiches gilt für 'git logs --oneline', außer dass man den Schnörkel auf der Seite zeigt

Danke, ich hoffe das hilft jemandem

Daniela-Idara
quelle
4

Hier sind zwei Aliase, die ich geschrieben habe, als ich die Syntax der Verwendung von benutzerdefinierten hexadezimalen Farbwerten verstanden habe, wie in der Antwort von @VonC gezeigt.

Es gibt vier Versionen. Der einzige Unterschied besteht in der Direktive --graph. In den Versionen 'f' werden auch Dateien angezeigt, die hinzugefügt, gelöscht oder geändert wurden:

[alias]
    lg = log --graph --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)\\ %d\\%C(#c0d6de)%s"    
    l1 = log --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)\\ %d\\%C(#c0d6de)%s"    
    lgf = log --name-status --graph --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)\\ %d\\%C(#c0d6de)%s" 
    l1f = log --name-status --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)\\ %d\\%C(#c0d6de)%s"

Ich habe diese Seite verwendet, um genau die Farben auszuwählen, die ich wollte, und dann den Hex-Wert daraus kopiert:

https://www.colorhexa.com/

Öffnen Sie unter Windows Ihre .gitconfig-Datei, die sich in Ihrem Ordner "C: \ Users \ YourUserName" befindet, und fügen Sie einen Alias-Abschnitt hinzu, wie oben dargestellt.

Hoffe du magst sie.

ElMatador
quelle