Couleur en git-log
quand vous lancez git log --decorate --pretty=oneline
la sortie aura des entrées comme (HEAD, refs/published/master, master)
avec la coloration.
j'ai aussi de la suite dans mon gitconfig:
[color "branch"]
current = yellow reverse
local = yellow
remote = green
comment répliquer ces couleurs en faisant un format personnalisé comme celui-ci?
git log --decorate --stat --graph --pretty=format:"%d %Cgreen%h%Creset (%ar - %Cred%an%Creset), %s%n"
4 réponses
à partir de 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
.
De la 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:
- la tête à cyan
- les branches éloignées en rouge
- l'étiquette en vert
et peut être modifié par le biais de color.decorate
config.
mais le git log --format
n'offrent pas un moyen d'afficher spécifiquement le HEAD
ou télécommandes ou branche: tous les trois sont affichées par le biais de %d
, avec une seule couleur possible.
mise à Jour Mai 2013, que mentionnés ci-après par Elad Shahar (upvoted), git 1.8.3 offre une option de plus:
git log –format
porte maintenant un jeton%C(auto)
qui dit à Git d'utiliser la couleur lors de la résolution%d
(décoration),%h
(court commettre nom de l'objet), etc. pour la sortie du terminal.
Ce Atlassian blog commentaires que cette fonctionnalité fait partie de plusieurs autres porté sur le format ( git rebase
, git count-objects
) et de couleurs ( git branch -vv
)
vient s'ajouter au 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)
Note: git 2.4+ (Q2 2015) fera un meilleur travail de réinitialisation de la couleur autour des noms de branche.
Voir commit 5ee8758 by Junio CA Hamano ( gitster
) :
log --decorate
: ne pas laisser filtrer la couleur" commit " dans l'article suivantdans "
git log --decorate
", vous verriez le en-tête commit comme ceci:
commit ... (HEAD, jc/decorate-leaky-separator-color)
où",
commit ... (
" est peint encolor.diff.commit
, "HEAD
"color.decorate.head
, ",
"color.diff.commit
, le nom de la branche danscolor.decorate.branch
puis " fermeture)
"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 cyan et vert sont trop faibles 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 seriez pas en mesure de réutiliser la même configuration sur un terminal blanc sur noir. Vous vous attendez naïvement
[color "decorate"]
head = normal
branch = normal
de travailler, mais malheureusement il ne le fait pas.
Il peint la corde "HEAD
" et le nom de la branche dans la même couleur que le ouverture de la parenthèse ou une virgule entre les éléments de décoration.
C'est parce que le code oublie pour réinitialiser la couleur après l'impression, le "préfixe" dans sa propre couleur.
notez que git 2.5 (Q2 2015) corrige un bug:
voir commit 429ad20 par Junio CA Hamano ( gitster
) , 13 mai 2015.
(Fusionné par Junio C. Hamano -- gitster
-- dans commit fd70780 , 22 mai 2015)
log
: ne raccourcissez pas les noms de décoration trop tôtla "
log --decorate
"amélioration en Git 2.4 qui montre le commit à la pointe de la branche actuelle par exemple "HEAD -> master
", n'a pas fonctionné avec --decorate=full.
Git 2.9.x+ (Q3 2016) corrigera un autre bug et honor color=auto
pour %C(auto)
Git 2.10.2 (Oct. 2016) résout d'autres bugs avec commettre 82b83da (29 septembre 2016), et commettre c99ad27 (17 septembre 2016) par René Scharfe (`) .
(fusionné par Junio CA Hamano -- gitster
-- dans commettre 76796d4 , le 28 octobre 2016)
pretty
: éviter d'ajouter reset 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 s'assurer que la coloration automatique est affichée comme prévu.
Arrêter de le faire si la sortie strbuf est vide , c'est-à-dire quand%C(auto)
apparaît au début de la chaîne de format, parce qu'il n'y a pas besoin de réinitialiser et nous enregistrons quelques octets dans la sortie.
pretty
: laisser%C(auto)
réinitialiser tous les attributsRéinitialiser les couleurs et attribue sur
%C(auto)
pour permettre la pleine automatique contrôle sur eux; autrement attributs comme gras ou inversé pourrait toujours être en vigueur à partir de la précédente%C
espaces réservés .
les parenthèses:
%C(...): color specification, as described in color.branch.* config option
donc %C(yellow reverse)
marcherait.
l'option de configuration log.decorate
peut activer/désactiver les décorations par défaut dans les logs.
git config --global log.decorate full
une fois que cela est fait, vous pouvez utiliser color.decorate.*
pour jouer avec les couleurs