Диаграмма GitGraph — это специализированный компонент визуализации, используемый разработчиками, командами DevOps и техническими писателями для четкой передачи стратегий ветвления Git, управления выпусками и рабочих процессов разработки. Интегрированная нативно в Mermaid.js, gitGraphдвигатель использует декларативную последовательную модель временной шкалы. Это позволяет напрямую отображать реальные команды терминала на точную визуальную временную шкалу без необходимости ручной обработки изображений.
Понимание матрицы временной шкалы GitGraph
В отличие от свободных диаграмм потоков системы, диаграмма GitGraph следует строгой последовательной логике порядка возникновения, моделируя реальные рабочие пространства системы контроля версий:
- Автоматическое создание корневой ветки: Каждое рабочее пространство диаграммы при инициализации автоматически создает основную временную шкалу корневой ветки. По умолчанию эта шкала называется
main, и все последующие действия отслеживаются относительно нее, если не создана чистая альтернативная ветвь. - Приоритет порядка: Элементы отображаются по хронологической оси слева направо в зависимости от порядка вставки команд в файл исходного кода.
Базовая структура синтаксиса
Каждая временная шкала начинается с ключевого слова в формате camelCase gitGraph ключевое слово объявления. За ним следует последовательный столбец перечисления атомарных команд выполнения, таких как коммиты, переключения и слияния.
gitGraph
commit
commit
branch feature-login
checkout feature-login
commit
checkout main
merge feature-login 
Полное руководство по командам Git-действий
Движок компоновки интерпретирует конкретные команды действий в нижнем регистре для изменения толщины линий, разделения треков или сливания конечных точек по холсту рабочей области.
| Токен команды Git | Модификаторы параметров аргументов | Технические действия и поведение компоновки |
|---|---|---|
commit |
id: "hash", type: TYPE, тег: "v1.0" |
Добавляет новую узловую точку промежуточной цели непосредственно на линию активного целевого ветвления. |
ветвь |
имя, порядок: Целое число |
Создает новое разделение ветвления. Вы можете принудительно задать его вертикальную позицию с помощью необязательного явногопорядок значения. |
переход / переключение |
имя-ветви |
Перемещает указатель активного индекса записи на указанную целевую линию ветвления. Последующие действия отслеживаются по этой ветке. |
слияние |
имя-целевой-ветви, id: "хэш", тег: "v2" |
Сливает указанную ветвь обратно в текущую ветвь, создавая четкую визуальную точку пересечения. |
выборочное копирование |
id: "хэш-коммита", родитель: "хэш-родителя" |
Дублирует конкретный коммит из внешней ветви на текущую ветвь без смешивания ветвей. |
Расширенная функция: Типы коммитов и настройка тегов
Чтобы различать обычные патчи, откаты системы или крупные релизы, вы можете назначить явныйтип и тег строковый модификатор внутри блока аргументов с использованием свойств в формате json-подобных пар ключ-значение.
Поддерживаемые классификации форм коммитов:
тип: ОБЫЧНЫЙ: По умолчанию. Отображается как заполненный сплошной круговой узел вдоль линии временной шкалы.тип: ОБРАТНЫЙ: Выделяет архитектурный или программный откат. Отображается как пересеченный сплошной круговой узел ($X$).тип: ВЫДЕЛЕНИЕ: Привлекает внимание к критическим структурным изменениям или исправлениям безопасности. Отображается как вытянутый заполненный прямоугольный блок.
gitGraph
commit id: "Инициализация"
commit type: HIGHLIGHT id: "Исправление-безопасности" tag: "v1.0.1"
commit type: REVERSE id: "Откат-функции-X" 
Расширенная функция: Логика выборки и строгие ограничения
Команда cherry-pick команда копирует конкретный изолированный узел с другой ветки временной шкалы на текущую активную ветку. Чтобы выполнить cherry-pick без ошибок компиляции, необходимо соблюдать следующие строгие требования к проверке рабочей среды:
- Ограничение исключения: Целевой идентификатор коммита, который вы выбираете, *не должен* уже существовать на ветке, которую вы в данный момент отслеживаете.
- Предварительная история: Текущая активная линия ветки должна содержать хотя бы один действительный узел коммита до вызова действия cherry-pick.
- Требование родительского узла слияния: Если вы выбираете узел слияния, вы должны явно передать строку идентификации непосредственного прямого родительского узла с помощью блока модификатора
parent: "хэш"модификатора.
gitGraph
commit id: "настройка"
branch staging
checkout staging
commit id: "патч-функции"
checkout main
commit id: "базовая-версия"
cherry-pick id: "патч-функции" 
Расширенная функция: Конфигурации параметров заголовка
Вы можете точно настроить глобальные визуальные поведения (например, переключение меток ветвей, изменение индексов строк или стекирование временных шкал), объявив блок директивы конфигурации%%{init: { 'logLevel': 'debug', 'theme': 'default' , 'config': { 'gitGraph': { ... } } } }%% блок директивы конфигурации в самом начале вашего скрипта графика.
Матрица настраиваемых параметров
| Строка ключа конфигурации | Определение типа | Значение по умолчанию | Результат изменения визуального интерфейса |
|---|---|---|---|
showBranches |
Логический тип | true |
Переключает видимость отдельных меток отслеживания ветвей с левой стороны сетки холста. |
showCommitLabel |
Логический тип | true |
Переключает отображение текстовых заголовков и алфавитно-цифровых хэшей непосредственно над отдельными узлами временной шкалы. |
mainBranchName |
Строка | "main" |
Изменяет текст отслеживания начальной корневой ветви по умолчанию (например, замена на"master" или "trunk"). |
mainBranchOrder |
Целое число | 0 |
Устанавливает индекс позиции порядка вертикального стекирования сверху вниз для основной линии отслеживания временной шкалы корневой ветви. |
parallelCommits |
Логический тип | ложь |
Если изменено на истина, отдельные коммиты, имеющие одинаковые расстояния родительских шагов, выравниваются симметрично на одном и том же вертикальном уровне. |
Реальный чертеж: производственная линия управления выпусками Git-Flow для корпоративного использования
Этот всесторонний корпоративный чертеж демонстрирует стандартную производственную линию выпуска. Он переопределяет параметры конфигурации для переименования основной полосы в trunk, устанавливает фиксированную иерархию порядка ветвей, использует несколько полос ветвей (develop и feature-auth), выполняет слияния, применяет пользовательские метки и развертывает коммиты с высоким приоритетом и выделенными формами.
%%{init: { 'gitGraph': { 'mainBranchName': 'trunk', 'showCommitLabel': true } } }%%
gitGraph
commit id: "Initial-Core" tag: "v1.0.0"
commit id: "Setup-CI"
branch develop
checkout develop
commit id: "Sprint-1-Base"
branch feature-auth
checkout feature-auth
commit id: "JWT-Logic"
commit id: "MFA-Logic" type: HIGHLIGHT
checkout develop
merge feature-auth id: "Merge-Auth"
commit id: "Beta-Compiled"
checkout trunk
merge develop id: "Release-Prod" tag: "v2.0.0" 
Распространённые ошибки синтаксиса и системные ограничения
При компиляции точных графиков управления версиями имейте в виду эти параметры устранения неполадок, чтобы избежать ошибок расчёта макета:
- Ошибки, связанные с регистром символов: Основное объявление инициализации должно быть написано в явном camelCase как
gitGraph. Написание его полностью в нижнем регистре какgitgraphвызовет сбой компилятора при разборе. - Идентификаторы без кавычек: При передаче пользовательских параметров коммита (например,
id: core_init), значения, содержащие дефисы, пробелы или точки, *должны* быть заключены в двойные кавычки. Пропуск блоков кавычек приведёт к потере ошибок проверки при компиляции. - Недопустимые цели перехода: Вызов
перейти к ветке branch_nameдействие над строковым идентификатором, который не был инициализирован заранее с помощьюветка branch_nameкоманда мгновенно нарушит построение графа. - Коллизии порядка ветвей: При использовании
порядоктег конфигурации на ветках, убедитесь, что несколько дорожек не сопоставляются одинаковым целым числам, если вы не хотите, чтобы дорожки на холсте перекрывались. Держите номера дорожек веток уникальными. - Ошибки разделения пробелами: Убедитесь, что при разделении свойств внутри матриц параметров в скобках существуют четкие пробелы между аргументами (например, используйте
id: "1", type: HIGHLIGHT). Пропуск недостающих запятых или пробелов может вызвать исключения при разборе.