По умолчанию git log --decorate
выставит:
- ГОЛОВА в циане
- удаленные ветви в красном
- тег в зеленом
и может быть изменен через color.decorate
config.
Но git log --format
не предлагает способ отображения конкретно пультов HEAD
или или : все три отображаются через %d
, возможен один цвет.
Обновление за май 2013 г., как упомянуто ниже от Elad Shahar (upvoted), 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 , которое автоматически отключает цвета, когда выход не используется для терминала1
%C(auto,blue)Hello%C(auto,reset)
Примечание: git 2.4+ (второй квартал 2015 года) лучше справится с настройкой цвета вокруг названий ветвей.
См. коммит 5ee8758 от Джунио С Хамано (gitster
) :
log --decorate
: не пропускайте цвет "commit" в следующий элемент
В "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 от 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.x + (3 квартал 2016 года) исправит еще одну ошибку и честь color=auto
для %C(auto)
Git 2.10.2 (октябрь 2016 г.) исправляет другие ошибки с помощью commit 82b83da (29 сентября 2016 г.) и commit c99ad27 (17 сентября 2016 г.) René Scharfe ( ``) .
(объединено Junio C Hamano - gitster
- в коммит 76796d4 , 28 октября 2016 г.)
pretty
: избегать добавления сброса для %C(auto)
, если вывод пуст
Мы выдаем escape-последовательность для сброса цвета и атрибута для %C(auto)
, чтобы обеспечить автоматическое окрашивание, отображаемое как задумано.
Прекратите это делать, если выходной strbuf пуст , то есть когда %C(auto)
появляется в начале строки формата, потому что тогда нет необходимости в сбросе, и мы сохраняем несколько байтов в выводе.
pretty
: пусть %C(auto)
сбросить все атрибуты
Сброс цветов и атрибутов после %C(auto)
для включения полностью автоматического
контроль над ними; в противном случае атрибуты, такие как жирный или обратный, могут
все еще в силе от предыдущих %C
заполнителей .