Короткий ответ - нет.
Более длинный ответ заключается в том, что они точно так же модифицируемы, как и коммиты: совсем нет, но если вы попытаетесь достаточно усердно, вы можете получить новый и другой коммит - или аннотированныйтег, в данном случае - и вы можете обманывать людей в думая вы изменили какой-то существующий объект.
Аннотированный тег состоит из облегченного тега - ссылки, котораяначинается с refs/tags/
- это указывает на внутренний объект Git типа tag:
$ git cat-file -t v2.4.0
tag
Базовый объект имеет хеш-идентификатор:
$ git rev-parse v2.4.0
67308bd628c6235dbc1bad60c9ad1f2d27d576cc
Этот хеш-идентификатор представляет собой Git-контрольная сумма стиля объекта (заголовок + содержимое):
$ git cat-file -p v2.4.0 | sed 's/@/ /'
object 3d4a3ffe64162b45ae7c991fc60623ecb4678cfd
type commit
tag v2.4.0
tagger Junio C Hamano <gitster pobox.com> 1430418320 -0700
Git 2.4
-----BEGIN PGP SIGNATURE-----
[snip]
Вы можете создать новый объект тега с другим содержимым (например, используя git tag
или git mktag
), но если содержимое отличается, поэтомубудет хэш-идентификатор.Затем можно сделать так, чтобы облегченное имя тега указывало на новый объект тега, например, с помощью git update-ref
.
Это никак не изменяет существующий объект.Однако наивный пользователь теперь будет некритически проверять тег, не замечая, что имя refs/tags/v2.4.0
создает новый и другой идентификатор объекта тега, считывает новый и другой объект тега и думаю, тег изменился.,(Если идентификатор внутри объекта тега все еще имеет имя v2.4.0
, все синхронизировано и, возможно, тег действительно изменился, с некоторых точек зрения!)
Попытка отправить этот новый обновленный тег другомуGit-репозитории могут преуспеть или потерпеть неудачу, в зависимости от их политики замены существующего ref-пространства имен тегов и наличия у них копии предыдущего тега.пара.