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

93

Я хочу раскрасить вывод git-status так, чтобы:

untracked files = magenta
new files = green
modified files = blue
deleted files = red

Вместо этого я вижу поэтапные файлы зеленым цветом, а неустановленные - синим: скриншот git-status

Мой .gitconfig настроен следующим образом на основе некоторого поиска:

[color]
status = auto

[color "status"]
added = green
changed = blue
untracked = magenta
deleted = red
Энди
источник
2
Примечание: git 2.9.1 поддерживает атрибуты italic и strike. Смотрите мою правку ниже.
VonC

Ответы:

132

Из git config doc :

color.status.<slot>

Используйте индивидуальный цвет для раскрашивания статуса. <slot>один из:

  • header (текст заголовка статусного сообщения),
  • addedили updated(файлы, которые добавляются, но не фиксируются),
  • changed (файлы, которые изменены, но не добавлены в индекс),
  • untracked (файлы, которые не отслеживаются git),
  • branch (текущая ветка),
  • nobranch (цвет, в котором отображается предупреждение об отсутствии ветки, по умолчанию красный),
  • localBranchили remoteBranch(имена локальных и удаленных веток соответственно, когда информация о ветвях и отслеживании отображается в кратком формате статуса),
  • unmerged (файлы с несмешанными изменениями).

Значения этих переменных могут быть указаны как в color.branch.<slot>.

Итак, это будет работать:

git config color.status.changed blue
git config color.status.untracked magenta

Однако:

new files = green
deleted files = red

Невозможно: нужно выбрать один цвет:

  • если они будут добавлены в индекс, они выберут цвет для color.status.added.
  • если они не добавлены в индекс, они выберут цвет или color.status.modified.

Конечно, как заметил по elboletaire :

Не забудьте включить вывод окраски, если он не был включен ранее:

git config --global color.ui true

Шон Латтин добавляет:

Команда также может принимать несколько параметров в кавычках. Это включает два цвета (фон переднего плана) из этого списка:

нормальный, черный, красный, зеленый, желтый, синий, пурпурный, голубой и белый;

а также включает один атрибут (стиль) из этого списка:

жирный, тусклый, ул, мигающий и обратный.

Итак, это будет работать:

git config color.status.changed "blue normal bold"
git config color.status.header "white normal dim"

Примечание: с git 2.9.1 (июль 2016 г.) в выходной схеме раскраски добавлены два новых атрибута: курсив изабастовка, в дополнение к уже существующим полужирным, обратным и т. д.

См. Фиксацию 9dc3515 , фиксацию 54590a0 , фиксацию 5621068 , фиксацию df8e472 , фиксацию ae989a6 , фиксацию adb3356 , фиксацию 0111681 (23 июня 2016 г.) Джеффом Кингом ( peff) .
(Объединено Junio ​​C Hamano - gitster- в коммите 3c5de5c , 11 июля 2016 г.)

Это также позволяет " no-" отрицать атрибуты

Использование " no-bold" вместо " nobold" легче читать и более естественно набирать (для меня, во всяком случае, хотя я был человеком, который ввел "nobold" в первую очередь). Легко разрешить и то, и другое.

VonC
источник
31
Не забудьте включить вывод окраски, если он не был включен ранее:git config --global color.ui true
elboletaire
1
@elboletaire - хорошее замечание. Я включил его в ответ для большей наглядности.
VonC
1
Спасибо, ответ - color.ui.
Робизи