Кольори 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.