git log --decoratePoł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.decorateconfig.
Ale git log --formatnie oferują sposób wyświetlania konkretnie HEAD czy piloty lub oddział: wszystkie trzy są wyświetlane przez %dz 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 –formatzawiera 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,reset1.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.brancha 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 --decorateUlepszenie " " 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=autodla%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 %Csymboli zastępczych .