Git tag: как создать, отправить на сервер и удалить тег
Тег в Git это постоянная метка на коммите, чаще всего номер версии. Создать аннотированный тег можно командой git tag -a v1.0.0 -m "Релиз 1.0.0", а отправить его на сервер командой git push origin v1.0.0: обычный git push теги не отправляет.
Виды тегов
Вид | Команда | Что хранит |
|---|---|---|
Лёгкий |
| Только указатель на коммит |
Аннотированный |
| Автора, дату и сообщение, отдельный объект в базе |
Для релизов используйте аннотированные теги: git describe и многие сервисы по умолчанию учитывают именно их.
Создать тег
git tag -a v1.0.0 -m "Релиз 1.0.0" # на текущем коммите
git tag -a v0.9.0 -m "Бета" a1b2c3d # на выбранном коммите
git tag v1.0.0-rc1 # лёгкий тегПосмотреть теги
git tag # все теги по алфавиту
git tag -l "v1.*" # по шаблону
git show v1.0.0 # сообщение тега и коммит
git describe --tags # ближайший тег и число коммитов после негоОтправить теги на сервер
git push origin v1.0.0 # один тег
git push origin --tags # все теги, которых ещё нет на сервере
git push --follow-tags # коммиты и аннотированные теги, указывающие на нихУдалить тег
git tag -d v1.0.0 # локально
git push origin --delete v1.0.0 # на сервереПерейти на тег или создать от него ветку
git switch --detach v1.0.0 # посмотреть код релиза
git switch -c hotfix/1.0.1 v1.0.0 # ветка для исправления от этого релизаПереместить тег на другой коммит
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 забирает теги, которые указывают на скачанные коммиты.