За 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+ (Q2 2015) зробить кращу роботу зі скидання кольору навколо імен гілок.
Див фіксації 5ee8758 з допомогою 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
.
Якщо ви хотіли пофарбувати назву HEAD та локальної гілки в той же колір, що і текст тексту (можливо, тому, що синій і зелений занадто слабкі на чорно-білому терміналі, щоб бути читабельним), ви не хотіли б говорити
[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
- у комісії fd70780 , 22 травня 2015 р.)
log
: не скорочуйте назви прикрас занадто рано
" log --decorate
" Покращення в Git 2.4, яке показує фіксацію на кінчику поточної гілки, наприклад, " HEAD -> master
" не працювало з --decorate = full.
Git 2.9.x + (Q3 2016) буде виправити іншу помилку і честь color=auto
для%C(auto)
Git 2.10.2 (жовтень 2016) виправляє інші помилки з командою 82b83da (29 вересня 2016) та виконувати c99ad27 (17 вересня 2016) від René Scharfe (``) .
(Об’єднано Хуніо С Хамано - gitster
- у комітеті 76796d4 , 28 жовтня 2016 р.)
pretty
: уникайте додавання скидання, %C(auto)
якщо вихід пустий
Ми випускаємо послідовність виходу для скидання кольору та атрибута, %C(auto)
щоб переконатися, що автоматичне фарбування відображається за призначенням
Перестаньте робити це, якщо вихідний strbuf порожній , тобто, коли він %C(auto)
з'являється на початку рядка формату, оскільки тоді немає необхідності в скиданні, і ми зберігаємо кілька байтів у висновку.
pretty
: нехай %C(auto)
скидає всі атрибути
Скиньте кольори та атрибути , %C(auto)
щоб увімкнути повний автоматичний контроль над ними; інакше такі атрибути, як напівжирний або зворотний, все ще можуть діяти від попередніх %C
заповнювачів .