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.


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.


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.


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

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


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.