git tag: метки версий и релизов
Обновлено 31 июля 2026 г.
Метка (tag) - это постоянное имя для одного конкретного коммита, и в отличие от ветки она никуда не двигается. Ветка уезжает вперёд с каждым коммитом, а v1.0 через три года указывает ровно туда же, куда указывала в день релиза.
Метки ставят там, где важно вернуться к точному состоянию: версия, релиз, вариант, отправленный заказчику.
$ git tag -a v1.0 -m "first release"
$ git tag
v0.9
v1.0Лёгкие и аннотированные
Лёгкая метка (git tag v0.9) - просто имя для хеша коммита, больше в ней ничего нет. Годится как временная закладка для себя.
Аннотированная метка (git tag -a v1.0 -m "...") - отдельный объект в репозитории: у неё есть автор, дата и сообщение. Именно её ставят на релизы: через год пригодится подпись, кто пометил этот коммит и зачем.
$ git show v1.0
tag v1.0
Tagger: Anna Petrova <anna@example.com>
Date: Tue Jul 21 21:37:52 2026 -0400
first release
commit a66eee41906fb21dff6996229c345e4ddb4386ebРазницу видно и в списке с сообщениями. У лёгкой метки своего сообщения нет, поэтому -n показывает заголовок коммита, на который она стоит:
$ git tag -n
v0.9 bob fixes typo
v1.0 first release
$ git tag -l "v1.*" # фильтр по шаблону
v1.0Метку можно поставить задним числом, назвав хеш: git tag -a v0.8 773e133. А посмотреть проект таким, каким он ушёл в релиз, помогает git switch --detach v1.0. Про этот режим без ветки - статья detached HEAD.
Метки не уезжают с обычным push
git push отправляет коммиты веток, метки он не трогает. Их посылают отдельно:
$ git push origin v1.0
To github.com:username/my-project.git
* [new tag] v1.0 -> v1.0
$ git push --tags # отправить все метки сразуУдаляются они тоже в двух местах: git tag -d v0.9 убирает метку у тебя, git push origin --delete v0.9 - на сервере.
Частые ошибки
Поставил метку, собрал релиз, а на GitHub его нет: забыл git push origin v1.0. Это первое, что стоит проверить.
Двигать уже отправленную метку через git tag -f - плохая идея. У всех, кто её успел забрать, v1.0 останется указывать на старый коммит, и разговор про «ту самую версию» превращается в путаницу. Выпусти v1.0.1.
Где это в учебнике
Раздел «Что дальше» в итоговом проекте.