В Git есть два типа тегов: «облегченные» и «аннотированные».
Легкие теги - это просто ссылки в пространстве имен refs/tags/
, которые указывают на какой-то другой объект.Они создаются с использованием git tag <tagname> [object]
без -a
, -m
, -F
, -s
или -u
.
Аннотированные теги на самом деле являются отдельным видом объекта Git (a тег объекта ), указывающий на какой-либо другой объект.Объекты тегов хранят информацию о коммитере, информацию об авторе, сообщение (аналогично объектам фиксации ) и указывают на любой другой объект (отличающийся от объектов фиксации, в котором коммиты указывают ровно на один объект дерева и ноль или более других коммитов).
Когда у вас есть аннотированный тег, у вас также обычно есть ссылка, указывающая на него.Технически эта ссылка сама по себе является «легковесным» тегом, но мы обычно не описываем их отдельно.
Обычно оба типа тегов указывают на коммиты, но они могут указывать на любой тип объекта Git (тег, коммит, дерево или капля).Хранилище git.git
имеет refs/tags/junio-gpg-pub
, которое указывает на большой двоичный объект, содержащий открытый ключ GPG сопровождающего.Кроме того, torvalds/linux-2.6.git
имеет refs/tags/v2.6.11
, который указывает на дерево.Хотя теги, указывающие на объекты без фиксации, технически разрешены, они могут сломать или перепутать некоторые инструменты, поэтому по возможности их следует избегать.
Суффикс синтаксиса ^{}
(описан в gitrevisions (7) ) - это синтаксис разыменования тега (иногда называемый синтаксисом «очищенный тег»).Для объектов тегов он оценивает первый объект без тегов, на который указывает объект тега (он будет рекурсивно отбрасывать цепочку объектов тегов до тех пор, пока не найдет объект без тегов).Для объектов без тегов это означает то же самое, что и без суффикса ^{}
.
Ссылка refs/tags/Prod_Release_2.3
в центральном хранилище указывает на объект тега с именем 30bd19ef190cf664356c715b56044ce739f07468
.
Этот объект тегав конечном итоге указывает на некоторый другой объект без тега с именем 4ae15ee04c2c41bfc7945e66f4effc746d52baec
(вероятно, коммит).
Таким образом, refs/tags/Prod_Release_2.3^{}
разрешается до 4ae15ee04c2c41bfc7945e66f4effc746d52baec
.