Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.
Кратко о задаче
Чтобы понять, что представляют собой эти метки, нужно рассмотреть еще несколько терминов. Во-первых, это коммит (commit). Определение коммитов простое — это точки сохранения версий проекта. Несколько коммитов образуют ветку (branch), которая является наглядной демонстрацией истории изменений проекта, при этом веток может быть и несколько. Вот мы и подошли к ключевому определению.
Теги Гит — это метки, предназначенные для обозначения важных коммитов. По ним, как правило, можно отследить историю версий, поскольку ответственные разработчики помечают очередную версию именно такой ссылкой. Добавим, что Git tags, как и ветки, указывают на конкретный коммит, однако, в отличие от последних, у них нет истории коммитов. Теперь посмотрим, как выполняется работа с тегами 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 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.5origin здесь обозначает сокращенное имя первоначального удаленного репозитория, откуда проект был клонирован. Для добавления в репозиторий нескольких тегов используйте флаг --tags вот так:
Удаление меток из внешнего репозитория осуществляется несколькими способами, но наиболее простой — при помощи флага --delete :
$ git push origin --delete ver-2.5А вот если мы введем такой код с флагом -d , который тоже указывает на удаление тега:
то для удаленного репозитория эта команда не сработает: флаг -d предназначен для удаления меток только на локальных, внутренних серверах.
Эта процедура выполняется при помощи команды checkout. Набрав в командной строке:
вы перейдете прямо к указанной метке. Однако учтите, что при переходе на теги открепляется указатель 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 аннотированного тега, после чего весь контент для указанной метки будет переопределен. Но помните, что вся старая информация после переназначения метки будет удалена, поэтому применяйте эту функцию с осторожностью.
Как видим, использование тегов делает Гит гибкой и удобной системой контроля версий. Представленные команды просты и функциональны, и их сможет быстро освоить даже начинающий разработчик, тем более что шпаргалку, состоящую из самых важных команд и флагов, мы для вас уже подготовили.
Кстати, в официальном канале Simple-Server мы собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать.
Нужен сервер для практики? Закажите VPS на Simple-Server — root-доступ, NVMe, DDoS-защита и поддержка 24/7.