За git log --decorateзамовчуванням буде поставлено:
- ГОЛОВА в циані
- віддалені гілки червоного кольору
- тег зеленим кольором
і може бути змінено через color.decorateconfig.
Але 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,reset1.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заповнювачів .