Перейти к основному содержимому

Объекты Git

Всю информацию Git представляет в виде "объектов". Объект – это файл, содержащий определенную информацию о репозитории и его файлах. Все объекты хранятся в директории .git/objects/. Объекты бывают трех типов:

  • Blob (англ. binary large object) – большой бинарный объект, другими словами просто бинарный файл. Для каждого файла в репозитории формируется blob-файл, который содержит его имя и сжатое содержимое. Blob-файл формируется, когда мы добавляем файл в индекс.
  • Tree (англ. tree – дерево). Дерево – это такой тип графа. Оно нужно нам, чтобы показывать связи между файлами в репозитории. Деревья формируются для каждой директории репозитория (в том числе для корневой) во время коммита и показывают, какие файлы (или поддиректории) лежат в данной директории. Таким образом, объект дерева состоит из имен:
    • blob-объектов для файлов, которые лежат в данной директории, и
    • других деревьев для всех поддиректорий.
  • Объект коммита. Этот объект содержит в себе имя автора коммита, время коммита и объект дерева корневой директории проекта.

Кроме этих трех объектов, важным во внутреннем устройстве Git является файл индекса.

Индекс – файл, в котором содержатся изменения, подготовленные для добавления в коммит. Во время добавления файлов командой git add:

  1. Сжимает содержимое этого файла и создает blob-объект.
  2. Записывает имя этого объекта в файл индекса.

Структура хранения данных репозитория в Git (источник: smartiqa.ru/courses/git):

Структура хранения данных репозитория в Git

Атрибуция

При подготовке статьи использован материал: