Lorsque vous exécutez git log --decorate --pretty=oneline
la sortie aura des entrées comme (HEAD, refs/published/master, master)
avec coloration.
J'ai également les éléments suivants dans mon gitconfig:
[color "branch"]
current = yellow reverse
local = yellow
remote = green
Comment reproduisez-vous ces couleurs lorsque vous effectuez un format personnalisé comme le suivant?
git log --decorate --stat --graph --pretty=format:"%d %Cgreen%h%Creset (%ar - %Cred%an%Creset), %s%n"
Depuis git 1.8.3 (24 mai 2013), vous pouvez utiliser %C(auto)
pour décorer %d
dans la chaîne de format de git log
.
À partir de notes de version :
* "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.)
Le git log --decorate
Mettra par défaut:
et peut être modifié via color.decorate
config.
Mais les git log --format
n'offrent pas un moyen d'afficher spécifiquement les HEAD
ou télécommandes ou branche: tous les trois sont affichés via %d
, avec une seule couleur possible.
Mise à jour de mai 2013, comme mentionné ci-dessous par Elad Shahar (voté), git 1.8.3 offre une option supplémentaire:
git log –format
Arbore désormais un jeton%C(auto)
qui indique à Git d'utiliser la couleur lors de la résolution de%d
(Décoration),%h
(Nom d'objet de validation court), etc. pour la sortie des bornes.
Ce article de blog Atlassian commente que cette fonctionnalité fait partie de plusieurs autres axées sur le format (git rebase
, git count-objects
) Et les couleurs (git branch -vv
)
Cela vient en plus du précédent auto,reset
De 1.8.2 , qui désactive automatiquement les couleurs lorsque la sortie n'est pas utilisée pour un terminal1
%C(auto,blue)Hello%C(auto,reset)
Remarque: git 2.4+ (Q2 2015) fera un meilleur travail de réinitialisation de la couleur autour des noms de branche.
Voir commit 5ee8758 par Junio C Hamano (gitster
) :
log --decorate
: Ne faites pas couler la couleur "commit" dans l'élément suivantDans "
git log --decorate
", Vous verriez l'en-tête de validation comme ceci:
commit ... (HEAD, jc/decorate-leaky-separator-color)
où "
commit ... (
" est peint encolor.diff.commit
, "HEAD
" encolor.decorate.head
, ",
" encolor.diff.commit
, le nom de la branche danscolor.decorate.branch
puis la fermeture de ")
" danscolor.diff.commit
.Si vous vouliez peindre le HEAD et le nom de la branche locale dans la même couleur que le corps du texte (peut-être parce que le cyan et le vert sont trop pâles sur un terminal noir sur blanc pour être lisibles), tu ne voudrais pas avoir à dire
[color "decorate"]
head = black
branch = black
car vous ne pourriez pas réutiliser la même configuration sur un terminal blanc sur noir. Vous vous attendriez naïvement
[color "decorate"]
head = normal
branch = normal
au travail, mais malheureusement ce n’est pas le cas.
Il peint la chaîne "HEAD
" et le nom de la branche dans la même couleur que la parenthèse ouvrante ou la virgule entre les éléments de décoration.
En effet, le code oublie de réinitialiser la couleur après avoir imprimé le "préfixe" dans sa propre couleur.
Notez que git 2.5 (Q2 2015) corrige un bug:
Voir commit 429ad2 par Junio C Hamano (gitster
) , 13 mai 2015.
(Fusionné par Junio C Hamano - gitster
- in commit fd7078 , 22 mai 2015)
log
: ne raccourcissez pas les noms de décoration trop tôtL'amélioration "
log --decorate
" Dans Git 2.4 qui montre la validation à la pointe de la branche actuelle, par exemple "HEAD -> master
", Ne fonctionnait pas avec --decorate = full.
Git 2.9.x + (Q3 2016) corrigera un autre bug et honorer color=auto
Pour %C(auto)
Git 2.10.2 (octobre 2016) corrige d'autres bogues avec commit 82b83da (29 sept. 2016), et commit c99ad27 (17 sept. 2016) par René Scharfe (``) .
(Fusionné par Junio C Hamano - gitster
- in commit 76796d4 , 28 octobre 2016)
pretty
: évitez d'ajouter une réinitialisation pour%C(auto)
si la sortie est videNous émettons une séquence d'échappement pour réinitialiser la couleur et l'attribut pour
%C(auto)
pour nous assurer que la coloration automatique est affichée comme prévu.
Arrêtez de faire cela si le strbuf de sortie est vide , c'est-à-dire lorsque%C(auto)
apparaît au début de la chaîne de formatage , car alors il n'y a pas besoin de réinitialisation et nous économisons quelques octets dans la sortie.
pretty
: laissez%C(auto)
réinitialiser tous les attributsRéinitialisez les couleurs et les attributs sur
%C(auto)
pour permettre un contrôle automatique complet sur eux; sinon, les attributs comme gras ou inversé pourraient toujours être en vigueur à partir des espaces réservés%C
précédents .
Entre parenthèses:
%C(...): color specification, as described in color.branch.* config option
Donc %C(yellow reverse)
fonctionnerait.
L'option de configuration log.decorate
peut activer/désactiver les décorations par défaut dans les journaux.
git config --global log.decorate full
Une fois cela fait, vous pouvez utiliser color.decorate.*
pour jouer avec les couleurs
Certains voudront peut-être utiliser ceci: %C(colorname)
Cela n'a pas besoin de changer la configuration des couleurs.
Exemple: colorier le nom de l'auteur en jaune
--pretty=format:"%C(yellow)%an%Creset"
Les couleurs ANSI régulières devraient fonctionner https://en.wikipedia.org/wiki/ANSI_escape_code