Цвет в git-log


при выполнении git log --decorate --pretty=oneline на выходе будут такие записи, как (HEAD, refs/published/master, master) С окраской.

у меня также есть следующее В моем gitconfig:

[color "branch"]
    current = yellow reverse
    local = yellow
    remote = green

как вы реплицируете эти цвета при выполнении пользовательского формата, как показано ниже?

git log --decorate --stat --graph --pretty=format:"%d %Cgreen%h%Creset (%ar - %Cred%an%Creset), %s%n"
4 93

4 ответа:

начиная с git 1.8.3 (24 мая 2013 г.), вы можете использовать %C(auto) для украшения %d в строке формат git log.

С заметки:

 * "git log --format" specifier learned %C(auto) token that tells Git
   to use color when interpolating %d (decoration), %h (short commit
   object name), etc. for terminal output.)

The git log --decorate поставит по умолчанию:

  • голова в голубом
  • удаленные ветви в красном
  • тег зеленый

и может быть изменено с помощью color.decorate config.

но git log --format не предлагайте способ отображения конкретно HEADили пульт или ветвь: все три отображаются через %d, С одним цветом вероятный.


обновление май 2013, как указанных ниже by Элад Шахар (голосуют), то git 1.8.3 предлагает еще один вариант:

git log –format теперь %C(auto) токен, который говорит Git использовать цвет при разрешении %d (украшения), %h (короткое имя объекта фиксации) и т. д. для терминального выхода.

этой сообщение в блоге Atlassian комментарии, что эта функция является частью нескольких других ориентирован на формат (git rebase,git count-objects) и цвета (git branch -vv)

это приходит в дополнение к предыдущему auto,reset из 1.8.2, который автоматически отключает цвета, когда выход не используется для terminal1

%C(auto,blue)Hello%C(auto,reset)

Примечание: git 2.4+ (Q2 2015) сделает лучшую работу по сбросу цвета вокруг названий ветвей.
Смотрите совершить 5ee8758 by Junio C Hamano (gitster):

log --decorate: не пропускайте цвет "фиксации" в следующий элемент

в "git log --decorate", вы увидите заголовок фиксации следующим образом:

commit ... (HEAD, jc/decorate-leaky-separator-color)

где "commit ... (" окрашен в color.diff.commit,"HEAD" в color.decorate.head,", " в color.diff.commit имя ветви в color.decorate.branch и после закрытия ")" в color.diff.commit.

если вы хотите нарисовать название головного и локального филиала в том же цвете, что и основной текст (возможно, потому, что голубой и зеленый слишком слабы на Черном-на-белом терминале, чтобы быть читаемым), вы не хотели бы сказать

[color "decorate"]
    head = black
    branch = black

потому что вы не сможете повторно использовать ту же конфигурацию на белом-на-черном терминале. Вы бы наивно ожидали

[color "decorate"]
    head = normal
branch = normal

работать, но, к сожалению, это не так.
Он рисует строку "HEAD " и имя ветви того же цвета, что и открывающая скобка или запятая между ними элемент декора.
Это связано с тем, что код забывает сбросить цвет после печати "префикса" в своем собственном цвете.


обратите внимание, что git 2.5 (Q2 2015) исправляет ошибку:

посмотреть совершить 429ad20 by Junio C Hamano (gitster), 13 мая 2015 года.
(слитый Junio C Hamano--gitster-- на commit fd70780, 22 мая 2015 года)

log: не сокращайте имена украшения слишком рано

"log --decorate "улучшение в Git 2.4, которое показывает фиксацию на кончике текущей ветви, например"HEAD -> master", не работал с --decorate=full.


Git 2.9.х+ (3-й квартал 2016 года) исправлена еще одна ошибка и честь color=auto на %C(auto)


Git 2.10.2 (Окт. 2016) исправляет другие ошибки с совершить 82b83da (29 сентября 2016), и commit c99ad27 (17 сентября 2016) by Шарфе Рене (`).
(слитый Junio C Hamano--gitster-- на совершить 76796d4, 28 окт 2016)

pretty: избегайте добавления "Reset" для %C(auto) если вывод пуст

мы выделяем escape-последовательность для сброса цвета и атрибута для %C(auto) чтобы убедиться, что автоматическая окраска отображается как предназначенный.
прекратите это делать, если выходной strbuf пуст, т. е. %C(auto) появляется в начале строки формата, потому что тогда нет необходимости в сбросе, и мы сохраняем несколько байтов на выходе.

pretty: да %C(auto) сбросить все атрибуты

цвета сброс и атрибуты на %C(auto) включить полный автоматический контроль над ними; в противном случае атрибуты, такие как полужирный или обратный может еще в эффект от предыдущего %C заполнители.

заключите их в скобки:

%C(...): color specification, as described in color.branch.* config option

Так %C(yellow reverse) будет работать.

опции конфигурации log.decorate включить/отключить украшения по умолчанию в журналах.

git config --global log.decorate full

как только это будет сделано, вы можете использовать color.decorate.* играть с цветами