Объекты Git
Всю информацию Git представляет в виде "объектов". Объект – это файл, содержащий определенную информацию о репозитории и его файлах. Все объекты хранятся в директории .git/objects/. Объекты бывают трех типов:
- Blob (англ. binary large object) – большой бинарный объект, другими словами просто бинарный файл. Для каждого файла в репозитории формируется blob-файл, который содержит его имя и сжатое содержимое. Blob-файл формируется, когда мы добавляем файл в индекс.
- Tree (англ. tree – дерево). Дерево – это такой тип графа. Оно нужно нам, чтобы показывать связи между файлами в репозитории. Деревья формируются для каждой директории репозитория (в том числе для корневой) во время коммита и показывают, какие файлы (или поддиректории) лежат в данной директории. Таким образом, объект дерева состоит из имен:
- blob-объектов для файлов, которые лежат в данной директории, и
- других деревьев для всех поддиректорий.
- Объект коммита. Этот объект содержит в себе имя автора коммита, время коммита и объект дерева корневой директории проекта.
Кроме этих трех объектов, важным во внутреннем устройстве Git является файл индекса.
Индекс – файл, в котором содержатся изменения, подготовленные для добавления в коммит. Во время добавления файлов командой git add:
- Сжимает содержимое этого файла и создает blob-объект.
- Записывает имя этого объекта в файл индекса.
Структура хранения данных репозитория в Git (источник: smartiqa.ru/courses/git):
Атрибуция
При подготовке статьи использован материал: