Коммит#

Коммит - Это отдельное сохранение (снимок) состояния ваших файлов в определенный момент времени. Является фундаментальной единицей истории Git, которая сохраняет изменения и позволяет отслеживать эволюцию проекта.

Правила наименования коммитов#

Наименования постоянных коммитов являются фиксированными.

Общий формат коммита: Label(Scope): Subject #issue [Issue-Number]

Label - тип изменений в коммите:

  • feat - реализация нового функционала.

  • fix - исправление ошибок.

  • hotfix - оперативное исправление критических ошибок.

  • test - добавление тестов.

  • refactor - рефакторинг кода без изменения функциональности.

  • docs - обновление документации.

  • chore - прочие изменения, не подпадающие под указанные категории.

Scopes - опциональная область, в которую вносят изменения (компонент, страница, модуль или пакет).

Subject - короткое описание изменений. Оно начинается с заглавной буквы и краткого страдательного причастия. Например: «Изменено», «Исправлены», «Указаны», «Реализован».

Issue-Number - номер задачи или документа поддержки, при наличии, либо notask.

Примеры названия коммита:

  • fix(rpl): Убрано поле "Источник" у входящих сообщений интеграции #issue 182831T

  • feat(btk): Указаны подробности в описании БО #issue 217081D

  • refactor(gtk, btk): Перенесена логика кэширования #issue notask

Метаданные коммита#

Каждый коммит содержит следующие метаданные:

  • Уникальный хеш (SHA-1) - 40-символьный идентификатор, вычисляемый на основе содержимого коммита.

  • Автор - пользователь, создавший изменения в файлах.

  • Коммитер (Автор фиксации коммита) - пользователь, зафиксировавший изменения в репозитории.

  • Дата создания - временная метка фиксации.

  • Сообщение коммита - описание внесённых изменений.

  • Ссылки на родительские коммиты - указатели на непосредственных предков в истории (есть у всех коммитов, кроме первого).

Основные свойства#

1. Неизменяемость#

После создания, коммит не может быть изменён. Любая модификация приводит к созданию нового коммита с уникальным хешем. Это обеспечивает целостность и достоверность истории проекта.

2. Атомарность#

Коммит представляет собой логически завершённый набор изменений, который должен быть функционально целостным.

3. Ссылочная целостность#

Каждый коммит (кроме начального) ссылается на один или несколько родительских коммитов, формируя граф.

Коммит и ветвление#

История Git представляет собой направленный ациклический граф, где коммиты являются узлами, а связи между ними - рёбрами, указывающими на предков.

Наследование коммитов

На изображении выше отображена типичная структура коммитов с демонстрацией их взаимосвязей и ключевых атрибутов.