Что означают цвета линий в git log --graph?

мне любопытно, что означают цвета линий в git log --graph?

Да, я спрашиваю о строки | / , которые соединяют совершает * на левом краю выхода консоли.

part of git log --graph output

Вопрос № 1
Эти цвета имеют какой-то скрытый смысл?
Или они выбраны псевдослучайно?

Вопрос № 2
Иногда перекрываются (но отключены) линии имеют тот же цвет.
Например, смотрите на фиолетовых линиях на скриншоте выше:

  • первая строка a55 to e1c
  • С 3c1 to 043

можно ли попросить git мудро выбирать цвета, чтобы избежать изолированных (не имеющих общей фиксации) одинаковых цветовых линий для перекрытия?
Я хочу, чтобы график был более легко читаемым.

2 ответов


цвета просто предназначены для того, чтобы помочь вам просматривать линии в отличие от других линий. Чтобы ответить на вопрос № 1, они назначаются не псевдослучайно, а скорее последовательно каждый раз git log --graph выбирает новый "номер столбца". К сожалению, есть два вопроса, о которых я знаю. Оба связаны с вашим вопросом №2.

вот полный список цветов по имени:

    GIT_COLOR_RED,
    GIT_COLOR_GREEN,
    GIT_COLOR_YELLOW,
    GIT_COLOR_BLUE,
    GIT_COLOR_MAGENTA,
    GIT_COLOR_CYAN,
    GIT_COLOR_BOLD_RED,
    GIT_COLOR_BOLD_GREEN,
    GIT_COLOR_BOLD_YELLOW,
    GIT_COLOR_BOLD_BLUE,
    GIT_COLOR_BOLD_MAGENTA,
    GIT_COLOR_BOLD_CYAN,

визуально, многие из этих цветов "выглядят одинаково" (или аналогичные достаточно вроде неразличимы). В частности, я нахожу, что "смелые" выглядят слишком похожими на "обычные", если нет довольно много букв, напечатанных "полужирным", то есть "полужирный" шрифт моего Mac-терминала просто не так много полужирный, чем его стандартный вес. Это делает многие линии слишком визуально похожими на графике для git log --graph --decorate --oneline --all запуск в репозитории Git для Git, например.

редактировать: теперь это можно исправить (или обойти), начиная с Git 2.12, используя новый log.graphColors запись конфигурации. Это разделенный запятыми список имен цветов или номеров цветов (см. на git config запись документации для "цвет" в разделе значения).

во-вторых, "номер столбца" в настоящее время на самом деле не номер столбца строки. Вместо этого это номер столбца фиксации. Цвет линии идет до от этой фиксации к фиксации над ней. Все пурпурные линии на твоем изображении. снимок перейдите к фиксациям, напечатанным в столбце #0: both a55fd8d и 3c1494a в столбце "0". (Они оба являются фиксациями слияния, поэтому они консолидируют входящие строки.)

можно ли попросить git мудро выбирать цвета, чтобы избежать изолированных (не имеющих общей фиксации) одинаковых цветовых линий для перекрытия?

вы всегда можете клонировать Git репозиторий для Git и написать новый код. Отмечу, что существующие графика.c почти 1400 хотя очереди длинные.


фиксация 73c727d69f47572bf7f21fa31831f9a3fdad944c ("log --graph: настройка линий графика с помощью журнала конфигурации.graphColors", 2017-01-19), можно выбрать цвета с log.graphColors config.

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

Я использую Git Bash и исключаю GIT_COLOR_BLUE цвета по вышеуказанной причине.

Я могу использовать любые шестнадцатеричные цветовые коды (по крайней мере, на Git Bash). Ниже настройка config использует только три цвета.

[log]
    graphColors = "#ffffff",red,green