Давайте дружить в Телеграме: рассказываем про новые фичи, общаемся в комментах, прислушиваемся к вашим идеям Подписаться

Работа с Git-тегами: создание, удаление, использование

Команда Timeweb Cloud
Команда Timeweb Cloud
Наши инженеры, технические писатели, редакторы и маркетологи
27 июля 2022 г.
1938
6 минут чтения
Средний рейтинг статьи: 5

Git уже более 15 лет, однако и сегодня он остается самым популярным среди систем управления версиями с распределенной архитектурой. Наиболее известен он своим знаменитым GitHub (Гитхаб) — это крупнейший удаленный репозиторий Гит, то есть то место, где разработчики хранят коды своих программ, документируют изменения и сохраняют старые версии. А помогают им в управлении версиями специальные метки или теги. В статье поговорим о том, что такое теги в репозитории Git и как с ними работать.

Порядок Выполнения Операций В Программировании

Что такое Git-теги

Чтобы понять, что представляют собой эти метки, нужно рассмотреть еще несколько терминов. Во-первых, это коммит (commit). Определение коммитов простое — это точки сохранения версий проекта. Несколько коммитов образуют ветку (branch), которая является наглядной демонстрацией истории изменений проекта, при этом веток может быть и несколько. Вот мы и подошли к ключевому определению.

Теги Гит — это метки, предназначенные для обозначения важных коммитов. По ним, как правило, можно отследить историю версий, поскольку ответственные разработчики помечают очередную версию именно такой ссылкой. Добавим, что Git tags, как и ветки, указывают на конкретный коммит, однако, в отличие от последних, у них нет истории коммитов. Теперь посмотрим, как выполняется работа с тегами Git, от создания, просмотра и публикации до замены, переключения и удаления.

Как создать теги Git

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

Создание аннотированных тегов

Аннотированными (или аннотируемыми) называются такие метки, которые содержат полную информацию о версии, включая имена и e-mail разработчиков, а также дату и время создания. Чтобы создать аннотированный тег, нужно использовать специальные параметры Git, называемые флагами. В данном случае это будут флаги -a и -m. Вот пример кода для создания аннотированной метки:

$ git tag -a ver-2.5 -m "beta version 2.5"
$ git tag
ver-0.1
ver-1.6
ver-2.5

Здесь $ git tag — основная команда для работы с метками, -a — параметр для создания аннотированного тега, за которым следует его идентификатор, а с помощью флага -m создается комментарий. Если попытаться создать аннотированный тег без комментария, откроется редактор, который предложит его ввести. Вывести затем данные метки вместе с коммитом можно, используя команду $ git show. Выглядит это так:

$ git show ver-2.5
tag ver-2.5
Tagger: Petr Ivanov <petr@company.ru>
Date: Fri Jul 1 18:02:35 2022 -0300

beta version 2.5

commit bf93b7eaa928fd77a55453118313701b04874051
Author: Ivan Petrov <ivan@company.ru>
Date: Mon Jan 3 16:41:02 2022 -0300

Как видим, команда $ git show сначала выводит данные автора тега, после чего идет комментарий, а затем данные коммита в виде контрольной хеш-суммы, которая состоит из 40 знаков. Также указывается автор коммита и дата его создания.

А проверить, что метка была создана успешно, можно при помощи флага -n. Эта команда очень простая:

$ git tag -n

Создание легковесных тегов

Легковесными тегами называются обычные указатели на коммиты, которые подходят для создания временных меток. Фактически легковесные метки представляют собой сохраненные в файлы контрольные хеш-суммы коммитов. Посмотрим на то, как выглядит код создания легковесной метки:

$ git tag ver-2.5a
$ git tag
ver-0.1
ver-1.6
ver-2.5
ver-2.5a
ver-2.6

А теперь попробуем вывести данные тега вместе с коммитом:

$ git show ver-2.5a
commit bf93b7eaa928fd77a55453118313701b04874051
Author: Ivan Petrov <ivan@company.ru>
Date: Mon Jan 3 16:41:02 2022 -0300

Как видим, дополнительной информации о теге нет — только данные коммита. Добавим, что для создания легковесных тегов флаги не используются.

Как добавлять и удалять теги Git в удаленных репозиториях

Для добавления меток Гит во внешние репозитории и удаления из них следует использовать команду push в таком виде:

$ git push origin ver-2.5

origin здесь обозначает сокращенное имя первоначального удаленного репозитория, откуда проект был клонирован. Для добавления в репозиторий нескольких тегов используйте флаг --tags вот так:

$ git push origin --tags

Удаление меток из внешнего репозитория осуществляется несколькими способами, но наиболее простой — при помощи флага --delete:

$ git push origin --delete ver-2.5

А вот если мы введем такой код с флагом -d, который тоже указывает на удаление тега:

$ git tag -d ver-2.5

то для удаленного репозитория эта команда не сработает: флаг -d предназначен для удаления меток только на локальных, внутренних серверах.

Как переключать теги

Эта процедура выполняется при помощи команды checkout. Набрав в командной строке:

$ git checkout ver-2.5

вы перейдете прямо к указанной метке. Однако учтите, что при переходе на теги открепляется указатель HEAD, а потому все последующие изменения будут сохраняться уже в новом коммите, не относящемся ни к одной из существующих веток. И переходить туда можно будет только по контрольной хеш-сумме. Так что не забывайте создавать новые ветки, если вносите изменения при открепленном указателе HEAD, который открепляется после ввода команды checkout.

Как посмотреть список Git-тегов

Делается это довольно просто, при помощи команды git tag, после чего все имеющиеся метки будут выведены ниже в алфавитном порядке. Пример:

$ git tag
ver-0.1
ver-1.6
ver-2.5
ver-2.5a
ver-2.6

А что если теги у нас обозначены по-разному и нам нужно вывести только некоторые, с определенной маркировкой? Для этого используются флаги -l или --list и выражение для поиска по шаблону, обозначаемое звездочками **, между которыми требуется подставить нужные знаки. Допустим, кроме меток из примера выше у нас есть еще такие: ver-1.6xyz, ver-2.5xyz, ver-2.6xyz. Тогда для того, чтобы вывести только их, вводим:

$ git tag -l *xyz*
ver-1.6xyz
ver-2.5xyz
ver-2.6xyz

Получаем такой список, где уже нет меток, которые были в первом списке, поскольку они не содержат сочетания символов xyz в своих идентификаторах.

Переназначение или замена тегов

Для обновления существующего тега используйте флаг -f, дающий команду на принудительную замену:

$ git tag -a -f ver-2.5a bf93b7eaa928fd77a55453118313701b04874051

В данном случае указывается также хеш коммита. Это нужно для того, чтобы программа сопоставила коммит с ID аннотированного тега, после чего весь контент для указанной метки будет переопределен. Но помните, что вся старая информация после переназначения метки будет удалена, поэтому применяйте эту функцию с осторожностью.

Резюме

Как видим, использование тегов делает Гит гибкой и удобной системой контроля версий. Представленные команды просты и функциональны, и их сможет быстро освоить даже начинающий разработчик, тем более что шпаргалку, состоящую из самых важных команд и флагов, мы для вас уже подготовили.

Кстати, в официальном канале Timeweb Cloud мы собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать. 

Зарегистрируйтесь и начните пользоваться
сервисами Timeweb Cloud прямо сейчас

15 лет опыта
Сосредоточьтесь на своей работе: об остальном позаботимся мы
165 000 клиентов
Нам доверяют частные лица и компании, от небольших фирм до корпораций
Поддержка 24/7
100+ специалистов поддержки, готовых помочь в чате, тикете и по телефону