Git ładne kolory w formacie

81

Próbuję ustawić ładne kolory formatu dla Git. Z tego co wiem, wersja 1.6.0 rozpoznaje tylko kolory czerwony, zielony i niebieski.

$ git log --pretty=format:"%Credred%Creset %Cgreengreen%Creset %Cyellowyellow%Creset %Cblueblue%Creset %Cmagentamagenta%Creset %Ccyancyan%Creset %Cwhitewhite%Creset"
red green %Cyellowyellow%Creset blue %Cmagentamagenta %Ccyancyan %Cwhitewhite

Ponadto żaden z kolorów nie działa z formatem kolorów w nawiasach.

Czy istnieje sposób na wyświetlenie dostępnych kolorów ładnego formatu dla Gita?

Niestety jest to na starszej maszynie SCO OpenServer 5.0.7, a ostatnia wersja Gita wydana przez SCO Skunkworks to 1.6.0.3.

James Allman
źródło
1
Jeśli Twoja platforma jest przestarzała, dlaczego nie pobierzesz najnowszego git 1.8.x z git-scm.com i nie skompilujesz go samodzielnie? Wtedy będzie obsługiwał wszystkie najnowsze funkcje.
mvp
@mvp Cóż, jak powiedziałeś, platforma jest przestarzała - co oznacza brak środowiska do budowania GNU. Przygotowuję istniejący kod źródłowy aplikacji do migracji do Linuksa.
James Allman,
Zwróć uwagę, że Git 2.3.0 (luty 2015) pozwoli na 24-bitowe wartości kolorów i lepsze zarządzanie atrybutami kolorów (pogrubienie, podkreślenie, ...). Zobacz moją odpowiedź poniżej
VonC
Git 2.26 (Q1 2020) doda atrybut „jasny” do obsługi jasnych kolorów aixterm. Zobacz moją zredagowaną odpowiedź poniżej
VonC,

Odpowiedzi:

144

Nie mam starą wersję git, aby sprawdzić, czy kolory inne niż red, bluei greensą obsługiwane.

Chociaż jedno zauważyłem nawet z nowszych wersji git(jak 1.7.10 użyłem) Czy to kolory inne niż red, greeni bluetrzeba być w nawiasach (). Na red, greeni blue, nawiasy są opcjonalne.

Więc spróbuj:

git log --pretty=format:"%Credred%Creset %Cgreengreen%Creset %C(Yellow)yellow%Creset %Cblueblue%Creset %C(magenta)magenta%Creset %C(cyan)cyan%Creset %C(white)white%Creset"

Lista kolorów Jestem świadomy przynajmniej to:

normal
black
red
green
yellow
blue
magenta
cyan
white

Można go połączyć z jednym z następujących atrybutów:

bold
dim
ul
blink
reverse
italic
strike
bright  # (Git 2.26, Q1 2020, example: brightred)

Jeśli próbujesz zmienić kolory za pomocą .gitconfig, powinieneś być w stanie określić dwa kolory - pierwszy plan i tło i możesz połączyć je z atrybutem.

Tuxdude
źródło
Uważam, że masz rację, ponieważ obsługiwane są tylko kolory podstawowe. Format kolorów w nawiasach w ogóle nie działa w tej wersji (1.6.0.3).
James Allman
16
oddzielny od przestrzeni pierwszy plan, tło i atrybuty, takie jak ten% C (czerwono-zielona pogrubiona)
HexInteractive
Istnieją co najmniej dwa inne atrybuty: kursywa i strajk jak napisano w instrukcji tutaj git-scm.com/docs/git-config i ze względów kompletność.
jedno zapytanie
1
@onemorequestion Nie ma problemu. Odpowiednio zredagowałem odpowiedź. Nawiasem mówiąc, bardzo podobała mi się twoja druga odpowiedź ( stackoverflow.com/a/61487052/6309 ).
VonC
40

Git 2.3.0 (luty 2015) pozwoli (dzięki Jeffowi Kink ( peff) ):


parse_color: obsługuje 24-bitowe wartości RGB

Niektóre terminale (takie jak XTerm) pozwalają na pełne 24-bitowe specyfikacje kolorów RGB przy użyciu rozszerzenia do zwykłego schematu kolorów ANSI.
Pozwólmy użytkownikom określić szesnastkowe kolory RGB, umożliwiając najważniejszą cechę dekoracji w kolorze gorącego różu :

git log --format="%h%C(#ff69b4)%d%C(reset) %s"

  • lepsze zarządzanie atrybutami kolorów:

parse_color: rozpoznaj „ no$foo”, aby wyczyścić $fooatrybut

Możesz włączyć atrybuty tekstu ANSI, takie jak „odwrócenie”, umieszczając „odwrócenie” w specyfikacji koloru. Nie możesz jednak poprosić o wyłączenie biegu wstecznego.

W typowych przypadkach nie ma to znaczenia. Należy włączyć „odwrócenie” na początku kolorowej sekcji, a następnie wyczyścić wszystkie atrybuty za pomocą „resetowania”.

Możesz jednak chcieć włączyć niektóre atrybuty, a następnie selektywnie wyłączyć inne. Na przykład:

git log --format="%C(bold ul yellow)%h%C(noul) %s"

podkreśla tylko hash, ale bez konieczności ponownego określania pozostałych atrybutów.

Może to również pomóc programom innych firm, na przykład contrib/diff-highlight, które chcą włączać / wyłączać niektóre atrybuty bez zakłócania istniejącego kolorowania.

Zauważ, że niektóre specyfikacje atrybutów są prawdopodobnie bezsensowne (np. „ bold nobold”). Nie zawracamy sobie głowy oznaczaniem takich konstrukcji i zamiast tego pozwalamy terminalowi to rozwiązać.


W Git 2.26 (Q1 2020) podstawowe 7 kolorów nauczyło się jaśniejszych odpowiedników (np. „ brightred”) .

Zobacz commit c444f03 , commit 1751b09 , commit 4a28eb0 (21 stycznia 2020) autorstwa Eyal Soha (``) .
(Scalone przez Junio ​​C Hamano - gitster- w zobowiązaniu 87f17d7 , 25 lutego 2020 r.)

color.c: obsługuje jasne kolory aixterm

Podpisano przez: Eyal Soha

Te kolory są jasnymi wariantami kolorów 3-bitowych.

Zamiast zakresu 30-37 dla pierwszego planu i 40-47 dla tła, żyją odpowiednio w zakresie 90-97 i 100-107.

git configDokumentacja obejmuje obecnie:

Podstawowe kolory są akceptowane normal, black, red, green, yellow, blue, magenta, cyani white.
Pierwszy podany kolor to pierwszy plan; druga to tło.

Wszystkie podstawowe kolory z wyjątkiem normalmają jasny wariant, który można określić, poprzedzając kolor znakiem bright, like brightred.

VonC
źródło
Zobacz także stackoverflow.com/a/12798205/6309 : git 2.9.1 obsługuje dwa nowe atrybuty: kursywę i przekreślenie.
VonC,
2
Czy wiesz, jak uwzględnić kolory RGB w aliasie git? #ff69b4działa w wierszu poleceń, ale nie w aliasie, ponieważ #rozpoczyna komentarz
Tim Malone
@TimMalone Jeszcze tego nie testowałem, ale strona podręcznika konfiguracji mówi: „Początkowe białe znaki po nazwie =, pozostała część wiersza po pierwszym znaku komentarza #lub ;, a końcowe spacje w wierszu są odrzucane, chyba że są ujęte w podwójne cudzysłowy . "
VonC,
1
@TimMalone Umieść cały alias w "cudzysłowach, a wtedy #nie będzie specjalny.
Tom Hale
@VonC, dostaję dziwne znaki, gdy przesyłam te git logpolecenia do tekstu lub klipu. Wygląda na to, że dzieje się tak, gdy używane są kolory i atrybuty --format. Masz jakiś pomysł, dlaczego lub jak to naprawić?
hIpPy
7

Udostępnij mój format dziennika git:

$ git log --graph --pretty=format:'%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) %C(cyan)<%an>%Creset' --abbrev-commit

Możesz także dodać alias do ~ / .gitconfig :

[alias]
    logs  = log --graph --pretty=format:'%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) %C(cyan)<%an>%Creset' --abbrev-commit

wtedy możesz użyć aliasu, jak zdefiniujesz w ~/.gitconfig.

$ git logs
Xiaofei HAN
źródło
7
Pytanie brzmi, jak znaleźć ładne kolory formatu git.
Rapnar
4

Używam Ubuntu 18.04 i mogłem skorzystać z sugestii Xiaofei HAN.

Początkującym miałem szczęście, edytując plik .gitconfig.

nano ~/.gitconfig

wklej blok [alias] od góry pod istniejący tekst

CTRL + O (aby wypisać) + CTRL + X (aby zamknąć nano)

Po wykonaniu tej czynności, aby zobaczyć ładne kolory, których możesz użyć

git logs

za pomocą

„git log” da ci widok bez kolorów,

to samo dla 'git logs --oneline', z tą różnicą, że jeden z nich pokaże rozkwit z boku

dziękuję, mam nadzieję, że to komuś pomoże

daniela-idara
źródło
4

Oto dwa aliasy, które napisałem, gdy zrozumiałem składnię używania niestandardowych szesnastkowych wartości kolorów, jak pokazano w odpowiedzi @VonC.

Istnieją cztery wersje, jedyną różnicą jest dyrektywa --graph, a wersje `` f '' pokazują również pliki, które zostały dodane, usunięte lub zmodyfikowane:

[alias]
    lg = log --graph --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)\\ %d\\%C(#c0d6de)%s"    
    l1 = log --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)\\ %d\\%C(#c0d6de)%s"    
    lgf = log --name-status --graph --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)\\ %d\\%C(#c0d6de)%s" 
    l1f = log --name-status --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)\\ %d\\%C(#c0d6de)%s"

Użyłem tej strony, aby wybrać dokładnie te kolory, które chciałem, a następnie skopiowałem z nich wartość szesnastkową:

https://www.colorhexa.com/

W systemie Windows otwórz plik .gitconfig znajdujący się w folderze „C: \ Users \ YourUserName” i dodaj sekcję aliasu, jak pokazano powyżej.

Mam nadzieję, że ich lubisz.

ElMatador
źródło