Что такое теги в Git и для чего они используются?

Ответ

Тег (tag) в Git — это именованная метка, которая указывает на конкретный коммит в истории проекта. Основное назначение тегов — отмечать важные точки, чаще всего — версии релизов (например, v1.0, v2.1.5).

В отличие от веток, теги являются статичными указателями и не перемещаются при создании новых коммитов.

Существует два типа тегов:

  1. Легковесные (Lightweight) Это простой указатель на коммит, не содержащий дополнительной информации. Похож на ветку, которая не изменяется.

    # Создание легковесного тега
    git tag v1.0-beta
  2. Аннотированные (Annotated) Это полноценные объекты в базе данных Git. Они содержат имя автора, email, дату создания, сообщение и могут быть подписаны GPG. Рекомендуется использовать именно их для публичных релизов.

    # Создание аннотированного тега с сообщением
    git tag -a v1.0 -m "First stable release"

Основные команды для работы с тегами:

  • git tag: Показать список всех тегов.
  • git show v1.0: Показать информацию о теге и коммите, на который он ссылается.
  • git push origin v1.0: Отправить конкретный тег в удаленный репозиторий.
  • git push origin --tags: Отправить все локальные теги.

Ответ 18+ 🔞

А, ну это ж про теги в Гите! Ну, типа, такая хуйня, чтобы не потеряться в истории коммитов, как в дремучем лесу. Представь, блядь, ты наконец-то допилил свой проект до вменяемого состояния — вот он, релиз, красавчик! И чтобы потом не искать его по всей истории, как иголку в стоге сена, ты вешаешь на этот коммит бирочку. Это и есть тег, ёпта.

Тег (tag) — это типа именная табличка, которая намертво, блядь, прибита к конкретному коммиту. Чаще всего вешают на версии: v1.0, v2.5.3 и всё такое. Главное отличие от ветки — ветка-то ползает, как мартышлюшка, с каждым новым коммитом, а тег — стоит на месте, как вкопанный. Навесил и забыл, пока не понадобится.

А теги-то, сука, бывают двух сортов:

  1. Легковесные (Lightweight) Это просто писюлька, ярлычок. Ни имени, ни отчества, ни истории болезни. Указал и всё. Создаётся проще пареной репы:

    git tag v1.0-beta

    Вот и всё, блядь. Тег есть.

  2. Аннотированные (Annotated) А вот это уже серьёзные пацаны, полноценные объекты. Тут тебе и автор, и дата, и можно накатать целое послание потомкам. Для релизов — самое то, чтобы не было потом "а кто это сделал, блядь?".

    git tag -a v1.0 -m "Первый стабильный релиз, ура, блядь!"

    Вот это уже солидно, да.

Чё с ними вообще делать можно, этими тегами?

  • git tag — посмотреть, какие таблички у тебя уже валяются в сарае. Список, короче.
  • git show v1.0 — а это чтобы рассмотреть конкретную бирку под лупой. Что за коммит, кто автор, какое сообщение.
  • git push origin v1.0 — отправить одну конкретную табличку на сервер, чтобы все видели.
  • git push origin --tags — а это, блядь, по-богатому: отправить все свои локальные теги разом. Главное, не натолкать туда какого-нибудь теста debug-shit, а то потом стыдно будет.

Вот и вся магия. Создал, подписал, отправил — и спи спокойно, версия не потеряется.