Как раскрасить вывод git?

Есть ли способ для вывода цвета для git (или любой команды)?

Рассмотрим:

 baller @ Ноутбук: ~ /rails /spunky-monkey $ git status
# В ветви new-message-types
# Изменения не поставлены для фиксации:
# (используйте «git add <file> ...», чтобы обновить то, что будет выполнено)
# (используйте «git checkout - <file> ...», чтобы отменить изменения в рабочем каталоге)
#
# modified: app /models /message_type.rb
#
никакие изменения не добавлены в commit (используйте «git add» и /или «git commit -a»)
baller @ Ноутбук: ~ /rails /spunky-monkey $ git добавить приложение /модели

и

 baller @ Ноутбук: ~ /rails /spunky-monkey $ git status
# В ветви new-message-types
# Изменения, которые необходимо совершить:
# (используйте «git reset HEAD <file> ...» для нестабильности)
#
# modified: app /models /message_type.rb
#

Результат выглядит одинаково, но информация совершенно другая: файл перешел из неустановленного в поставленный для фиксации.

Есть ли способ раскрасить вывод? Например, неустановленные файлы красные, устраиваются зеленые?

Или даже Изменения не поставлены для фиксации: на красный и # Изменения, которые необходимо совершить: на зеленый?

Работа в Ubuntu.

EDIT: Googling нашел этот ответ, который отлично работает: git config --global --add color.ui true.

Однако существует ли еще общее решение для добавления цвета к выходу команды?

206 голосов | спросил B Seven 30 J000000Monday12 2012, 03:34:22

9 ответов


221

Вы можете создать раздел [color] в вашем ~ /.gitconfig, например. следующий контент

[цвет]
  diff = авто
  status = auto
  branch = auto
  interactive = авто
  ui = true
  pager = true

Вы также можете точно контролировать, что вы хотите покрасить, например,

[color "status"]
  Добавлено = зеленый
  changed = red bold
  untracked = пурпурный полужирный

[цветная "ветка"]
  отдаленный = желтый

Надеюсь, вам это поможет. И, конечно же, вам нужен терминал, поддерживающий цвет.

ответил Marco 30 J000000Monday12 2012, 11:50:07
178

Возможно, вы захотите использовать

git config --global color.ui auto

В разделе auto говорится, что git будет пытаться использовать цвет только на терминалах, которые его поддерживают, и вы не получите ANSI-последовательностей, если вы перенаправляете вывод команд git в файл, например. Установка его в true аналогична auto, и это также значение по умолчанию, так как Git 1.8.4.

color.ui - это мета-конфигурация, которая включает в себя все различные конфигурации color. *, доступные с помощью команд git.

Это подробно объясняется в git help config.

ответил Evgeny 30 J000000Monday12 2012, 16:52:52
14
git config --global color.ui auto
git config --global color.branch auto
git config --global color.status auto
ответил sakisk 4 ThuEurope/Moscow2014-12-04T23:20:44+03:00Europe/Moscow12bEurope/MoscowThu, 04 Dec 2014 23:20:44 +0300 2014, 23:20:44
8

Принятый ответ дает наиболее распространенное решение. Если по какой-либо причине вам не нужно постоянно изменять конфигурацию, что делает это решение, вы можете переопределить конфигурацию для одной команды git:

git -c color.ui = always <обычный git command и options>

Например:

git -c color.ui = всегда статус
git -c color.ui = всегда diff

Протестировано: поддерживается на git 2.4.6, not поддерживается на git 1.7.1.

ответил Hamlet 17 PM00000080000001531 2016, 20:59:15
5
git config --global color.ui всегда
git config --global color.branch всегда
git config --global color.diff всегда
git config - global colour.interactive всегда
git config --global color.status всегда
git config --global color.grep всегда
git config --global color.pager true
git config - global colour.decorate всегда
git config - global colour.showbranch всегда
ответил mlibre 17 J000000Sunday16 2016, 10:20:58
1

Вы можете сделать это с помощью произвольного символа вывода команд . В основном это работает, но я не понял, как обойти ошибку, когда подсказки, ожидающие ввода, не отображаются, и вы не можете просто ввести нужный необходимый ввод и нажать клавишу ввода для продолжения в каждом случае.

Пример ~ /.acoc.conf для git:

# git
[Мерзавец /ае]
/.*(error:.*)/red + жирный
/.*(warning:.*)/yellow
/.*(hint:.*)/magenta
/.*(up-to-date).*/green + bold
/.* (не совершать). * /green
/^(\+.*)/зеленый
/^(-.*)/красный

.., который хорошо работает с alias git = "acoc git" в .bash_profile.

ответил Tom Mahoney 4 J0000006Europe/Moscow 2013, 12:58:56
0

Я знаю, что пост четыре года, но никто не ответил из моего лагеря, слепой. Если вы можете различать цвета, игнорируйте мой пост.

«статус git», например, выделяет текст, белый на фоне /черный на белом фоне (разборчивый), темно-серый для удаления (неразборчивый на черном фоне, но разборчивый на белом фоне) и средний серый для добавления (ячмень разборчивый на черном фоне, неразборчивый на белом фоне). Я использовал для переключения фона моего окна терминала на /из белого /черного цвета, чтобы я мог читать неразборчивый текст. Простое решение:

git status | Больше

Это делает текст разборчивым в стандартном оконном окне белого или черного фона.

ответил Jan David Narkiewicz 20 J000000Thursday17 2017, 04:01:45
0

или выключить все /большую часть раскраски с помощью:

git config --global color.ui false
git config --global color.branch false
git config --global color.diff false
git config --global color.interactive false
git config --global color.status false
git config --global color.grep false
git config --global color.pager false
git config --global color.decorate false
git config --global color.showbranch false
ответил theRiley 2 MaramThu, 02 Mar 2017 05:00:41 +03002017-03-02T05:00:41+03:0005 2017, 05:00:41
0

Для цветного <кода> git diff, помещенного в less, это работает:

git -c color.diff = всегда diff [...] | меньше -R
ответил jox 29 PMpSun, 29 Apr 2018 22:27:55 +030027Sunday 2018, 22:27:55

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132