El git log --decorate
sera mis par défaut :
- le HEAD en cyan
- les branches distantes en rouge
- le tag en vert
et peut être modifié par color.decorate
config.
Mais le git log --format
n'offrent pas de moyen d'afficher spécifiquement les HEAD
o télécommandes o branche : les trois sont affichés par %d
avec une seule couleur possible.
Mise à jour de mai 2013, comme mentionnés ci-dessous par Elad Shahar (upvoted), git 1.8.3 offre une option supplémentaire :
git log –format
arbore désormais un %C(auto)
qui dit à Git d'utiliser la couleur lors de la résolution de %d
(décoration), %h
(nom court de l'objet commit), etc. pour la sortie du terminal.
Este Article du blog d'Atlassian précise que cette fonctionnalité fait partie de plusieurs autres axées sur le format ( git rebase
, git count-objects
) et les couleurs ( git branch -vv
)
Cette mesure s'ajoute à la précédente 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)
Note : git 2.4+ (Q2 2015) fera un meilleur travail pour réinitialiser la couleur autour des noms de branches.
Voir commettre 5ee8758 par Junio C Hamano ( gitster
) :
log --decorate
: ne pas faire fuir la couleur de "l'engagement" dans l'élément suivant
En " git log --decorate
", vous verrez l'en-tête de commit comme ceci :
commit ... (HEAD, jc/decorate-leaky-separator-color)
où " commit ... (
" est peint en color.diff.commit
, " HEAD
" dans color.decorate.head
, " ,
" dans color.diff.commit
le nom de la branche dans color.decorate.branch
et ensuite fermer " )
" dans color.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), 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. On s'attendrait naïvement à ce que
[color "decorate"]
head = normal
branch = normal
pour fonctionner, 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.
Cela est dû au fait 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 bug :
Voir commettre 429ad20 par Junio C Hamano ( gitster
) , 13 mai 2015.
(fusionné par Junio C Hamano -- gitster
-- en commit fd70780 , 22 mai 2015)
log
: ne pas raccourcir trop tôt les noms de décoration
Le " log --decorate
"dans Git 2.4 qui montre le commit à l'extrémité de la branche courante, par exemple " HEAD -> master
", ne fonctionnait pas avec --decorate=full.
Git 2.9.x+ (Q3 2016) corrige un autre bogue et honneur color=auto
para %C(auto)
Git 2.10.2 (oct. 2016) corrige d'autres bogues avec les éléments suivants commit 82b83da (29 septembre 2016), et commettre c99ad27 (17 septembre 2016) par René Scharfe (``) .
(fusionné par Junio C Hamano -- gitster
-- en commettre 76796d4 , 28 oct. 2016)
pretty
: éviter d'ajouter une réinitialisation pour %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)
pour s'assurer que la coloration automatique s'affiche 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 format, car alors il n'est pas nécessaire de faire une réinitialisation et nous économisons quelques octets dans la sortie.
pretty
: laisser %C(auto)
réinitialiser tous les attributs
Réinitialisation des couleurs et les attributs sur %C(auto)
pour activer la fonction automatique automatique ; sinon des attributs comme le gras ou l'inverse pourraient être encore en vigueur à partir d'une %C
placeholders .