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