Понимание основ объектной модели git показывает значение подписывающих тегов.
На приведенной ниже диаграмме, заимствованной из Git Community Book , показан конкретный снимок. Затененные коробки - это мерзкие объекты. Объект фиксации слева относится к дереву. Думайте о дереве как о каталоге файловой системы, поэтому объект дерева ссылается на другие деревья и большие двоичные объекты. Объект BLOB-объектов хранит содержимое файла.
Каждый объект git имеет SHA1, уникальный 40-значный шестнадцатеричный дайджест, полученный из содержимого этого объекта. Сокращенные шестнадцатеричные строки над объектами представляют их соответствующие SHA1.
Объекты Git неизменны: изменение даже одного бита содержимого объекта меняет его имя. Это SHA1s полностью вниз. Любое изменение в BLOB-объекте требует нового дерева, а затем, в свою очередь, нового коммита, поэтому невозможно одновременно вставить в другое содержимое и избежать обнаружения . Знание только SHA1 коммита дает вам точный, проверенный на целостность снимок дерева.
Коммит также относится к своему непосредственному родителю (или нескольким родителям в случае слияний), поэтому гарантия еще сильнее. Изменение одного бита в любом месте в истории коммита также изменяет его SHA1. Знание только SHA1 одного коммита дает вам огромное количество информации: точное дерево в контексте точной истории вплоть до первого коммита.
Каждый может создавать коммиты, и каждый может заявить, что , скажем, Линус Торвальдс. Важно знать, какие коммиты заслуживают доверия. Подписанный тег, который ссылается на коммит, предоставляет вам всю вышеуказанную информацию вместе с проверяемой подлинностью. Во многих проектах подписанные теги используются для маркировки официальных релизов.