Il git log --decorate
metterà per impostazione predefinita:
- la TESTA in ciano
- i rami remoti in rosso
- l'etichetta in verde
e può essere modificato tramite color.decorate
config.
Ma il git log --format
non offrono un modo per visualizzare in particolare la HEAD
o telecomandi o filiale: tutti e tre vengono visualizzati tramite %d
, con un colore possibile.
L'aggiornamento di maggio 2013, come indicato di seguito da Elad Shahar (votato positivamente), git 1.8.3 offre un'altra opzione:
git log –format
ora presenta un %C(auto)
token che dice a Git di usare il colore durante la risoluzione %d
(decorazione), %h
(nome oggetto di commit breve), ecc. per l'output del terminale.
Questo post sul blog Atlassian commenta che questa funzione fa parte di molte altre incentrate su formato ( git rebase
, git count-objects
) e colori ( git branch -vv
)
Questo si aggiunge al precedente auto,reset
1.8.2 , che disabilita automaticamente i colori quando l'output non viene utilizzato per un terminale1
%C(auto,blue)Hello%C(auto,reset)
Nota: git 2.4+ (Q2 2015) farà un lavoro migliore nel ripristinare il colore attorno ai nomi dei rami.
Vedi commit 5ee8758 di Junio C Hamano ( gitster
) :
log --decorate
: non trapelare il colore "commit" nell'elemento successivo
In " git log --decorate
", vedresti l'intestazione del commit in questo modo:
commit ... (HEAD, jc/decorate-leaky-separator-color)
dove " commit ... (
" è disegnato dentro color.diff.commit
, " HEAD
" dentro color.decorate.head
, " ,
" dentro color.diff.commit
, il nome del ramo dentro
color.decorate.branch
e poi chiude " )
" dentro color.diff.commit
.
Se volessi dipingere HEAD e il nome del ramo locale dello stesso colore del corpo del testo (forse perché il ciano e il verde sono troppo sbiaditi su un terminale nero su bianco per essere leggibili), non dovresti dire
[color "decorate"]
head = black
branch = black
perché non saresti in grado di riutilizzare la stessa configurazione su un terminale bianco su nero. Te lo aspetteresti ingenuamente
[color "decorate"]
head = normal
branch = normal
per funzionare, ma purtroppo non funziona.
Dipinge la stringa " HEAD
" e il nome del ramo dello stesso colore della parentesi o virgola di apertura tra gli elementi decorativi.
Questo perché il codice dimentica di reimpostare il colore dopo aver stampato il "prefisso" con il proprio colore.
Nota che git 2.5 (Q2 2015) corregge un bug:
Vedere commit 429ad20 di Junio C Hamano ( gitster
) , 13 maggio 2015
(unito da Junio C Hamano - gitster
- in commit fd70780 , 22 maggio 2015)
log
: non abbreviare troppo presto i nomi delle decorazioni
Il " log --decorate
" miglioramento in Git 2.4 che mostra il commit alla fine del ramo corrente, ad esempio " HEAD -> master
", non ha funzionato con --decorate = full.
Git 2.9.x + (Q3 2016) risolverà un altro bug e onore color=auto
per%C(auto)
Git 2.10.2 (ottobre 2016) corregge altri bug con commit 82b83da (29 settembre 2016) e commit c99ad27 (17 settembre 2016) di René Scharfe (``) .
(Fuso da Junio C Hamano - gitster
- in commit 76796d4 , 28 ottobre 2016)
pretty
: evitare di aggiungere reset %C(auto)
se l'uscita è vuota
Emettiamo una sequenza di escape per ripristinare il colore e l'attributo per %C(auto)
assicurarci che la colorazione automatica venga visualizzata come previsto.
Smetti di farlo se l'output strbuf è vuoto , cioè quando %C(auto)
appare all'inizio della stringa di formato, perché allora non c'è bisogno di un reset e salviamo alcuni byte nell'output.
pretty
: lascia %C(auto)
resettare tutti gli attributi
I colori di reset e gli attributi al momento %C(auto)
per consentire il pieno controllo automatico su di loro; altrimenti attributi come grassetto o inverso potrebbero essere ancora attivi dai %C
segnaposto precedenti .