По git log --decorate
умолчанию будет помещено:
- ГОЛОВА в голубом
- удаленные филиалы в красном
- тег в зеленом
и может быть изменен через color.decorate
config.
Но git log --format
они не предлагают способ конкретно отображать HEAD
или пульты или ветвь: все три отображаются %d
с одним возможным цветом.
Обновление мая 2013 как указано ниже по Elad Шахар (upvoted), мерзавец 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 от Junio C Hamano ( gitster
) :
log --decorate
: не пропускайте цвет "фиксации" в следующий элемент
В " git log --decorate
" вы увидите такой заголовок фиксации:
commit ... (HEAD, jc/decorate-leaky-separator-color)
где " commit ... (
" закрашивается color.diff.commit
, " HEAD
" in color.decorate.head
, " ,
" in color.diff.commit
, имя ветки в
color.decorate.branch
и затем закрывается " )
" в color.diff.commit
.
Если вы хотите закрасить HEAD и имя локальной ветки в тот же цвет, что и основной текст (возможно, потому, что голубой и зеленый слишком тусклые на черно-белом терминале, чтобы их можно было прочитать), вам не нужно говорить
[color "decorate"]
head = black
branch = black
потому что вы не сможете повторно использовать ту же конфигурацию на терминале «белое на черном». Вы наивно ожидали
[color "decorate"]
head = normal
branch = normal
работать, но, к сожалению, это не так.
Он закрашивает строку « HEAD
» и имя ветки в тот же цвет, что и открывающая скобка или запятая между элементами декора.
Это потому, что код забывает сбросить цвет после печати «префикса» в его собственном цвете.
Обратите внимание, что в git 2.5 (второй квартал 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 г.) исправляет другие ошибки с помощью фиксации 82b83da (29 сентября 2016 г.) и фиксации c99ad27 (17 сентября 2016 г.) Рене Шарфе (``) .
(Объединено Junio C Hamano - gitster
- в коммите 76796d4 , 28 октября 2016 г.)
pretty
: избегать добавления сброса, %C(auto)
если вывод пуст
Мы создаем escape-последовательность для сброса цвета и атрибута, %C(auto)
чтобы убедиться, что автоматическая окраска отображается должным образом.
Прекратите делать это, если выходной strbuf пуст , то есть когда %C(auto)
появляется в начале строки формата, потому что тогда нет необходимости в сбросе, и мы сохраняем несколько байтов на выходе.
pretty
: %C(auto)
сбросить все атрибуты
Сбросить цвета и атрибуты , %C(auto)
чтобы включить полный автоматический контроль над ними; в противном случае такие атрибуты, как полужирный или обратный, могут по-прежнему действовать от предыдущих %C
заполнителей .