Wie kann ich separate Farben für aktuelle, lokale und ferne Referenznamen erzielen, wenn ich ein benutzerdefiniertes Git-Protokollformat verwende?

16

Ich verwende ein benutzerdefiniertes Git-Protokollformat. Ich habe color.ui=truein meine gesetzt .gitconfig. Zum Beispiel dieses einfache Format:

git log --pretty=format:"%h %d %s" --decorate

Dies würde so etwas wie drucken

52a41e0 (HEAD, local) Commit message foo
185bd17 (remote) The commit message

HEAD, local, remote wird ohne Farbe ausgegeben, git log --oneline --decoratewährend HEAD (fett cyan), local (fett grün) und remote (fett rot) mit Farbe ausgegeben werden . Jetzt kann ich das %dmit so etwas umschließen %Cred%d%Creset, dass alle Ref-Namen rot werden.

Wie kann ich aktuelle, lokale und ferne Referenznamen mit unterschiedlichen Farben versehen, wenn ich ein benutzerdefiniertes Format mit Git-Protokoll verwende?

Ben Doerr
quelle
Ich denke nicht, dass es möglich ist: stackoverflow.com/questions/5889878/color-in-git-log/…
VonC
Ack, sah nicht nach Stapelüberlauf aus. Das ist aber schade.
Ben Doerr
@VonC Vielleicht solltest du das als Antwort hinzufügen?
NN
@NN habe ich. Auf Stapelüberlauf. Über eine der zehntausend Fragen zu Git.
Vom

Antworten:

11

Laut diesem Atlassian-Blogpost können Sie jetzt %C(auto)ab git 1.8.3 verwenden .

git log --format=format:'%h%C(auto)%d%C(reset) %s (%an, %ar)'

gibt

Bildbeschreibung hier eingeben

- Nochmals mit freundlicher Genehmigung von VonC zu "Color in git-log" , der hier zur Vereinfachung eingehender Google-Anfragen erneut veröffentlicht wurde.

Caspar
quelle
4

Der git log --decoratewird standardmäßig setzen:

  • der KOPF in Cyan
  • die entfernten Zweige in rot
  • der tag in grün

und kann durch geändert werden color.decorate config .

Aber die git log --formatbieten keine Möglichkeit, gezielt die HEAD oder Fernbedienungen oder anzuzeigen Filiale: Alle drei werden angezeigt durch %d, mit einer Farbe möglich.

- VonC zu "Color in git-log"

Tom Wijsman
quelle