Кольори Git досить формату


81

Я намагаюся налаштувати кольори формату для Git. З того, що я можу сказати, версія 1.6.0 розпізнає лише червоний, зелений та синій кольори.

$ 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

Крім того, жоден з кольорів не працює з кольоровим форматом у дужках.

Чи є спосіб перерахувати доступні кольори гарного формату для Git?

На жаль, це на застарілій машині SCO OpenServer 5.0.7, а остання версія Git, випущена SCO Skunkworks, була 1.6.0.3.


1
Якщо ваша платформа застаріла, чому б вам не завантажити останню версію git 1.8.x з git-scm.com і не скомпілювати її самостійно? Тоді він буде підтримувати всі найновіші функції.
— mvp

@mvp Ну, як ви вже сказали, платформа застаріла - це означає відсутність середовища збірки GNU. Я готую існуючий вихідний код програми для переходу на Linux.
— James Allman

Зауважте, що Git 2.3.0 (лютий 2015 р.) Дозволить 24-бітові значення кольору та краще управління кольоровими атрибутами (жирний шрифт, підкреслення, ...). Дивіться мою відповідь нижче
— VonC

Git 2.26 (Q1 2020) додасть атрибут "яскравий" для підтримки яскравих кольорів aixterm. Дивіться мою відредаговану відповідь нижче
— VonC

Відповіді:


143

У мене немає старої версії, gitщоб підтвердити, що кольори, крім red, blueі greenпідтримуються.

Хоча, одне, що я помітив навіть в останніх версіях git(наприклад, 1.7.10, який я використовував), це те, що кольори, крім red, greenі blueповинні бути в дужках (). Для red, greenта blue, дужки необов’язкові.

Тож спробуйте:

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"

Список кольорів , я знаю , принаймні , є:

normal
black
red
green
yellow
blue
magenta
cyan
white

Його можна поєднати з одним із таких атрибутів:

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

Якщо ви намагаєтеся змінити кольори за допомогою, .gitconfigви повинні мати можливість вказати два кольори - передній та задній, і ви можете поєднати це з атрибутом.


Я вважаю, ви маєте рацію, підтримуючи лише основні кольори. Формат кольорів у дужках у цій версії (1.6.0.3) взагалі не працює.
— James Allman

16
простір, окремий передній план, фон та такі атрибути, як цей% C (червоно-зелений жирний шрифт)
— HexInteractive

Є по крайнього заходу дві інші атрибути: курсивний і ударними , як написано в інструкції тут git-scm.com/docs/git-config і по Комплектність причин.
— onemorequestion

1
@onemorequestion Немає проблем. Відповідь я відредагував. Мені дуже сподобалась ваша інша відповідь ( stackoverflow.com/a/61487052/6309 ), до речі.
— VonC

40

Git 2.3.0 (лютий 2015 р.) Дозволить (завдяки Джеффу Кінку ( peff) ):


parse_color: підтримує 24-бітові значення RGB

Деякі термінали (наприклад, XTerm) дозволяють отримати повні 24-бітові специфікації кольорів RGB, використовуючи розширення до звичайної колірної схеми ANSI.
Давайте дозволимо користувачам вказувати шістнадцяткові кольори RGB, вмикаючи найважливішу особливість яскраво-рожевих кольорових прикрас :

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

  • краще управління кольоровими атрибутами:

parse_color: розпізнати " no$foo", щоб очистити $fooатрибут

Ви можете ввімкнути текстові атрибути ANSI, такі як "зворотний", поставивши "зворотний" у специфікації кольорів. Однак ви не можете попросити вимкнути реверс.

У звичайних випадках це не має значення. Ви б увімкнули "зворотне" на початку кольорового розділу, а потім очистили всі атрибути за допомогою "скидання".

Однак ви можете увімкнути деякі атрибути, а потім вибірково вимкнути інші. Наприклад:

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

підкреслює лише хеш, але без необхідності повторного вказівки решти атрибутів.

Це також може допомогти стороннім програмам, наприклад contrib/diff-highlight, які хочуть увімкнути / вимкнути якийсь атрибут, не порушуючи існуюче забарвлення.

Зверніть увагу, що деякі специфікації атрибутів, мабуть, безглузді (наприклад, " bold nobold"). Ми не турбуємось позначати такі конструкції, а натомість дозволяємо терміналу сортувати це.


З Git 2.26 (Q1 2020) основні 7 кольорів засвоїли яскравіші аналоги (наприклад, " brightred") .

Див. Коміт c444f03 , коміт 1751b09 , коміт 4a28eb0 (21 січня 2020 р.) Від Eyal Soha (``) .
(Об’єднано Junio ​​C Hamano - gitster- у комітеті 87f17d7 , 25 лютого 2020)

color.c: підтримує яскраві кольори aixterm

Підписав: Еял Соха

Ці кольори є яскравими варіантами 3-розрядних кольорів.

Замість 30-37 для переднього плану та 40-47 для заднього плану, вони живуть відповідно в 90-97 та 100-107.

git configДокументація тепер включає в себе:

Основні кольори , прийняті в normal, black, red, green, yellow, blue, magenta, cyanі white.
Перший наведений колір - це передній план; другий - фон.

Усі основні кольори, за винятком, normalмають яскравий варіант, який можна вказати, додавши до кольору префікс bright, наприклад brightred.


Див. Також stackoverflow.com/a/12798205/6309 : git 2.9.1 підтримує два нові атрибути: курсив та страйк.
— VonC

2
Чи знаєте ви, як включити кольори RGB у псевдонім git? #ff69b4працює в командному рядку, але не під псевдонімом, тому що #починається коментар
— Тім Малоун

@TimMalone Я ще не тестував, але на сторінці налаштування користувача написано: "Провідні пробіли після імені =, залишок рядка після першого символу коментаря #або ;, а проміжні пробіли рядка відкидаються, якщо вони не укладені в подвійні лапки . "
— VonC

1
@TimMalone Помістіть цілий псевдонім у- "quote, і тоді #не буде особливим.
— Том Хейл

@VonC, я отримую дивні символи, коли я передаю ці git logвиходи команди в текст або кліп. Схоже, це трапляється, коли використовуються кольори та атрибути --format. Будь-яка ідея, чому чи виправити це?
— hIpPy

7

Поділіться моїм форматом журналу 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

Ви також можете додати псевдонім у ~ / .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

тоді ви можете використовувати псевдонім, як ви визначили в ~/.gitconfig.

$ git logs

7
Питання полягає в тому, як дізнатися кольори гарного формату git.
— Рапнар,

4

Я використовую Ubuntu 18.04, і я зміг скористатися пропозиціями Xiaofei HAN.

Для початківців, які намагаються це виконати, мені пощастило, відредагувавши .gitconfig.

nano ~/.gitconfig

вставте блок [псевдонім] зверху під наявний текст

CTRL + O (виписати) + CTRL + X (закрити нано)

Після цього, щоб побачити гарні кольори, які можна використовувати

git logs

використання

'git log' забезпечить вам перегляд без кольорів,

те саме для 'git logs --oneline', за винятком того, що один покаже процвітання збоку

дякую, я сподіваюся, це комусь допоможе


4

Ось два псевдоніми, які я написав, коли зрозумів синтаксис використання власних шістнадцяткових значень кольору, як показано у відповіді @VonC.

Є чотири версії, єдина відмінність - директива --graph, а версії 'f' також покажуть вам файли, які були додані, видалені або змінені:

[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"

Я використав цей сайт, щоб вибрати точні кольори, які хотів, а потім скопіював із нього шістнадцяткове значення:

https://www.colorhexa.com/

Для Windows відкрийте файл .gitconfig, який знаходиться у вашій папці "C: \ Users \ YourUserName", і додайте розділ псевдонімів, як показано вище.

Сподіваюся, вони вам подобаються.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.