Le git log --decorate
mettra par défaut:
- la TETE en cyan
- les branches éloignées en rouge
- le tag en vert
et peut être modifié via color.decorate
config.
Mais ils git log --format
n'offrent pas de moyen d'afficher spécifiquement la HEAD
ou les télécommandes ou la branche: les trois sont affichés à travers %d
, avec une couleur possible.
Mise à jour de mai 2013, comme mentionné ci-dessous par Elad Shahar (voté pour), git 1.8.3 offre une option supplémentaire:
git log –format
arbore maintenant un %C(auto)
jeton qui indique à Git d'utiliser la couleur lors de la résolution %d
(décoration), %h
(nom d'objet de validation court), etc. pour la sortie du terminal.
Ce billet 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 de Junio C Hamano ( gitster
) :
log --decorate
: ne pas diffuser la couleur "commit" dans l'élément suivant
Dans " git log --decorate
", vous verriez l'en-tête de validation comme ceci:
commit ... (HEAD, jc/decorate-leaky-separator-color)
où " commit ... (
" est peint dans color.diff.commit
, " HEAD
" dans color.decorate.head
, " ,
" dans color.diff.commit
, le nom de la branche dans
color.decorate.branch
et puis se ferme " )
" dans color.diff.commit
.
Si vous vouliez peindre la tête 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 lisible), vous ne voudriez pas avoir à dire
[color "decorate"]
head = black
branch = black
parce que vous ne pourriez pas réutiliser la même configuration sur un terminal blanc sur noir. Vous attendriez naïvement
[color "decorate"]
head = normal
branch = normal
travailler, 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.
C'est parce que 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 bogue:
Voir commit 429ad20 de Junio C Hamano ( gitster
) , 13 mai 2015
(fusionné par Junio C Hamano - gitster
- dans le commit fd70780 , 22 mai 2015)
log
: ne raccourcissez pas les noms de décoration trop tôt
L' log --decorate
amélioration " " dans Git 2.4 qui montre le commit à la pointe de la branche actuelle, par exemple " HEAD -> master
", ne fonctionnait pas avec --decorate = full.
Git 2.9.x + (Q3 2016) va fixer un autre bug et l' honneur color=auto
pour%C(auto)
Git 2.10.2 (octobre 2016) corrige d'autres bogues avec le commit 82b83da (29 septembre 2016) et le commit c99ad27 (17 septembre 2016) par René Scharfe (``) .
(Fusionné par Junio C Hamano - gitster
- dans commit 76796d4 , 28 octobre 2016)
pretty
: éviter d'ajouter une réinitialisation %C(auto)
si la sortie est vide
Nous émettons une séquence d'échappement pour réinitialiser la couleur et l'attribut pour %C(auto)
s'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 quand %C(auto)
apparaît au début de la chaîne de format, 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 attributs
Couleurs Réinitialiser et attributs sur %C(auto)
pour activer le contrôle automatique complet sur eux; sinon, les attributs tels que gras ou inversé pourraient toujours être en vigueur à partir des %C
espaces réservés précédents .