Git tag: как создать, отправить на сервер и удалить тег

Категория: Git · Язык: Bash · Обновлено:

Тег в Git это постоянная метка на коммите, чаще всего номер версии. Создать аннотированный тег можно командой git tag -a v1.0.0 -m "Релиз 1.0.0", а отправить его на сервер командой git push origin v1.0.0: обычный git push теги не отправляет.

Виды тегов

Вид

Команда

Что хранит

Лёгкий

git tag v1.0.0

Только указатель на коммит

Аннотированный

git tag -a v1.0.0 -m "текст"

Автора, дату и сообщение, отдельный объект в базе

Для релизов используйте аннотированные теги: git describe и многие сервисы по умолчанию учитывают именно их.

Создать тег

Bash
git tag -a v1.0.0 -m "Релиз 1.0.0"       # на текущем коммите
git tag -a v0.9.0 -m "Бета" a1b2c3d      # на выбранном коммите
git tag v1.0.0-rc1                       # лёгкий тег

Посмотреть теги

Bash
git tag                                  # все теги по алфавиту
git tag -l "v1.*"                        # по шаблону
git show v1.0.0                          # сообщение тега и коммит
git describe --tags                      # ближайший тег и число коммитов после него

Отправить теги на сервер

Bash
git push origin v1.0.0                   # один тег
git push origin --tags                   # все теги, которых ещё нет на сервере
git push --follow-tags                   # коммиты и аннотированные теги, указывающие на них

Удалить тег

Bash
git tag -d v1.0.0                        # локально
git push origin --delete v1.0.0          # на сервере

Перейти на тег или создать от него ветку

Bash
git switch --detach v1.0.0               # посмотреть код релиза
git switch -c hotfix/1.0.1 v1.0.0        # ветка для исправления от этого релиза

Переместить тег на другой коммит

Bash
git tag -f -a v1.0.0 -m "Релиз 1.0.0" e4f5a6b
git push origin v1.0.0 --force

Частые вопросы

Почему git push не отправил мои теги?

Теги отправляются отдельно: git push origin имя-тега или git push origin --tags.

Как получить теги с сервера?

git fetch --tags скачает все теги. Обычный git fetch забирает теги, которые указывают на скачанные коммиты.