git log --decorate
Położy domyślnie:
- GŁOWA w kolorze cyjan
- odległe gałęzie na czerwono
- tag w kolorze zielonym
i można je zmienić za pomocą color.decorate
config.
Ale git log --format
nie oferują sposób wyświetlania konkretnie HEAD
czy piloty lub oddział: wszystkie trzy są wyświetlane przez %d
z jednego koloru możliwe.
Aktualizacja maj 2013, jak wspomniano poniżej przez Elad Shahar (upvoted), git 1.8.3 oferty sprzedaży jeszcze jedną opcję:
git log –format
zawiera teraz %C(auto)
token, który mówi Gitowi, aby używał koloru podczas rozstrzygania %d
(dekoracji), %h
(krótka nazwa obiektu zatwierdzenia), itp. na wyjściu terminala.
Ten wpis na blogu Atlassian komentuje, że ta funkcja jest częścią kilku innych, koncentrujących się na formacie ( git rebase
, git count-objects
) i kolorach ( git branch -vv
)
Jest to dodatek do poprzedniej wersji auto,reset
1.8.2 , która automatycznie wyłącza kolory, gdy wyjście nie jest używane przez terminal1
%C(auto,blue)Hello%C(auto,reset)
Uwaga: git 2.4+ (Q2 2015) będzie lepiej resetować kolory wokół nazw gałęzi.
Zobacz commit 5ee8758 autorstwa Junio C Hamano ( gitster
) :
log --decorate
: nie przeciekaj koloru "zatwierdzenia" do następnego elementu
W „ git log --decorate
” zobaczyłbyś następujący nagłówek zatwierdzenia:
commit ... (HEAD, jc/decorate-leaky-separator-color)
gdzie „ commit ... (
” jest namalowane color.diff.commit
, „ HEAD
” w color.decorate.head
”, ,
„ w ” color.diff.commit
, nazwa gałęzi w,
color.decorate.branch
a następnie zamykająca„ )
” color.diff.commit
.
Jeśli chcesz pomalować HEAD i nazwę lokalnego oddziału w tym samym kolorze co tekst podstawowy (być może dlatego, że cyjan i zielony są zbyt blade na czarno-białym terminalu, aby były czytelne), nie chciałbyś mówić
[color "decorate"]
head = black
branch = black
ponieważ nie byłbyś w stanie ponownie użyć tej samej konfiguracji na terminalu biało-czarnym. Naiwnie byś się tego spodziewał
[color "decorate"]
head = normal
branch = normal
do pracy, ale niestety tak nie jest.
Maluje ciąg „ HEAD
” i nazwę gałęzi w tym samym kolorze, co nawias otwierający lub przecinek między elementami dekoracji.
Dzieje się tak, ponieważ kod zapomina o zresetowaniu koloru po wydrukowaniu „prefiksu” w swoim własnym kolorze.
Zauważ, że git 2.5 (Q2 2015) naprawia błąd:
Zob. Zatwierdzenie 429ad20 autorstwa Junio C Hamano ( gitster
) , 13 maja 2015 r.
(Połączone przez Junio C Hamano - gitster
- w zatwierdzeniu fd70780 , 22 maja 2015 r.)
log
: nie skracaj nazw dekoracji zbyt wcześnie
log --decorate
Ulepszenie " " w Git 2.4, które pokazuje zatwierdzenie na końcu bieżącej gałęzi, np. " HEAD -> master
", Nie działało z --decorate = full.
Git 2.9.x + (III kwartał 2016 r.) Naprawi kolejny błąd i zaszczyt color=auto
dla%C(auto)
Git 2.10.2 (październik 2016) naprawia inne błędy z zatwierdzeniem 82b83da (29 września 2016) i zatwierdzeniem c99ad27 (17 września 2016) przez René Scharfe (``) .
(Scalone przez Junio C Hamano - gitster
- w zatwierdzeniu 76796d4 , 28 października 2016 r.)
pretty
: unikaj dodawania resetowania, %C(auto)
jeśli wyjście jest puste
Emitujemy sekwencję ucieczki do resetowania koloru i atrybutu, %C(auto)
aby upewnić się, że automatyczne kolorowanie jest wyświetlane zgodnie z przeznaczeniem.
Przestań to robić, jeśli wyjściowy strbuf jest pusty , tj. %C(auto)
Pojawia się na początku łańcucha formatującego, ponieważ wtedy nie ma potrzeby resetowania i zapisujemy kilka bajtów w wyjściu.
pretty
: niech %C(auto)
zresetuje wszystkie atrybuty
Zresetuj kolory i atrybuty , %C(auto)
aby umożliwić pełną automatyczną kontrolę nad nimi; w przeciwnym razie atrybuty, takie jak pogrubienie lub odwrócenie, mogą nadal obowiązywać z poprzednich %C
symboli zastępczych .