теги Git
Описание
Теги — это ссылки, указывающие на конкретные коммиты в истории Git. Основная функция тегирования — фиксация определенной точки в истории, обычно для обозначения выпуска версии. Теги неизменяемы: после создания они не отслеживают историю коммитов.

Создание тега Git
Чтобы создать тег Git, выполните следующую команду:
git tag
git tag <name-of-tag>При создании тега замените <name-of-tag> на семантический идентификатор состояния репозитория. Git поддерживает два типа тегов: аннотированные и легкие (lightweight). Основное отличие между ними заключается в объеме хранимых метаданных.
Аннотированные теги
Git хранит аннотированные теги как полноценные объекты в своей базе данных. Они содержат дополнительные метаданные, такие как имя, адрес электронной почты и дата автора тега. Как и коммиты, аннотированные теги включают сообщение о тегировании. Их также можно подписывать и проверять с помощью GPG (GNU Privacy Guard) в целях безопасности.
Выполнение приведенной ниже команды создаст новый аннотированный тег с идентификатором v1.3. После этого откроется настроенный текстовый редактор по умолчанию, предложив ввести сообщение о тегировании.
git annotated tag
git tag -a v1.3Легкие теги
Приведенная ниже команда создает легкий тег с идентификатором v1.3-lw. Легкие теги создаются без опций -a, -s или -m. Они просто хранят указатель на конкретный объект коммита в директории .git/refs/tags/.
git lightweight tag
git tag v1.3-lwСписок тегов
Выполните следующую команду для вывода списка сохраненных тегов:
git tag command
git tagВ результате вы увидите вывод, похожий на этот:
git tag output
v0.10.0
v0.10.0-rc1
v0.11.0
v0.11.0-rc1
v0.11.1
v0.11.2
v0.12.0
v0.12.0-rc1
v0.12.1
v0.12.2
v0.13.0
v0.13.0-rc1
v0.13.0-rc2Вы можете использовать опцию -l с выражением подстановки (wildcard) для фильтрации списка тегов:
git tag with wildcard
git tag -l *-rc*
v0.10.0-rc1
v0.11.0-rc1
v0.12.0-rc1
v0.13.0-rc1
v0.13.0-rc2
v0.14.0-rc1
v0.9.0-rc1
v15.0.0-rc.1
v15.0.0-rc.2
v15.4.0-rc.3Тегирование старых коммитов
По умолчанию git tag создает тег на коммите, на который указывает HEAD. Вы также можете передать ссылку на конкретный коммит, чтобы пометить старый коммит. Выполните команду git log, чтобы просмотреть старые коммиты. В приведенном ниже примере для нового тега используется коммит слияния. Чтобы сослаться на конкретный коммит, укажите его SHA-хеш:
git log
git log --pretty=oneline
29389857951b64cf874c3557a0f3547bd83b899a Merging branch 'crossword'
b4a5697498bd301d84096da251c98a07c7723e65 init method for crossword
89f3aaab4479697da7686c15f77a3d64d9165190 little changes in logic
3a4a271eda8725415634dd79daabbc4d9b6008e Merging branch 'how-it-works'Выполните команду git tag, чтобы создать новый аннотированный тег с идентификатором v1.2 для коммита, выбранного в предыдущем примере:
git tag for old commits
git tag -a v1.2 29389857951b64cf874c3557a0f3547bd83b899aЗамена старых тегов
Попытка создать тег с уже существующим идентификатором приведет к ошибке. Используйте опцию -f (force), чтобы обновить существующий тег, что перезапишет его предыдущее содержимое.
git tag replacing old tags
git tag -a -f v1.3 29389857951b64cf874c3557a0f3547bd83b899aОтправка тегов на удаленный репозиторий
Чтобы отправить тег на удаленный репозиторий, передайте имя тега в команду git push. Это гарантирует, что другие пользователи, клонирующие репозиторий, получат новый тег.
git tag, pushing to remote
git push origin v1.3
Counting objects: 9, done.
Delta compression using up to 5 threads.
Compressing objects: 100% (8/8), done.
Writing objects: 100% (12/12), 2.05 KiB | 0 bytes/s, done.
Total 12 (delta 3), reused 0 (delta 0)
To [email protected]:gr8/gittagdocs.git
* [new tag] v1.3 -> v1.3Проверка тегов
Вы можете использовать команду git checkout для просмотра помеченного коммита. Это переведет репозиторий в состояние detached HEAD. Любые новые коммиты, созданные в этом состоянии, не будут принадлежать ни одной ветке и будут доступны только по их SHA-хешу.
git tag, checking over tags
git checkout v1.3Удаление тегов
Вы можете удалить тег, передав опцию -d и идентификатор тега в git tag. См. пример ниже:
git tag, deleting tags
git tag
v1
v2
v3
git tag -d v1
git tag
v2
v3Практика
Какие функции и опции есть у команды 'git tag' в Git?