Git уже более 15 лет, однако и сегодня он остается самым популярным среди систем управления версиями с распределенной архитектурой. Наиболее известен он своим знаменитым GitHub (Гитхаб) — это крупнейший удаленный репозиторий Гит, то есть то место, где разработчики хранят коды своих программ, документируют изменения и сохраняют старые версии. А помогают им в управлении версиями специальные метки или теги. В статье поговорим о том, что такое теги в репозитории Git и как с ними работать.
Что такое Git-теги
Чтобы понять, что представляют собой эти метки, нужно рассмотреть еще несколько терминов. Во-первых, это коммит (commit). Определение коммитов простое — это точки сохранения версий проекта. Несколько коммитов образуют ветку (branch), которая является наглядной демонстрацией истории изменений проекта, при этом веток может быть и несколько. Вот мы и подошли к ключевому определению.
Теги Гит — это метки, предназначенные для обозначения важных коммитов. По ним, как правило, можно отследить историю версий, поскольку ответственные разработчики помечают очередную версию именно такой ссылкой. Добавим, что Git tags, как и ветки, указывают на конкретный коммит, однако, в отличие от последних, у них нет истории коммитов. Теперь посмотрим, как выполняется работа с тегами Git, от создания, просмотра и публикации до замены, переключения и удаления.
Как создать теги Git
В Гит есть два основных вида меток: аннотированные и легковесные, и создаются они по-разному.
Создание аннотированных тегов
Аннотированными (или аннотируемыми) называются такие метки, которые содержат полную информацию о версии, включая имена и e-mail разработчиков, а также дату и время создания. Чтобы создать аннотированный тег, нужно использовать специальные параметры Git, называемые флагами. В данном случае это будут флаги -a и -m. Вот пример кода для создания аннотированной метки:
Здесь $ git tag — основная команда для работы с метками, -a — параметр для создания аннотированного тега, за которым следует его идентификатор, а с помощью флага -m создается комментарий. Если попытаться создать аннотированный тег без комментария, откроется редактор, который предложит его ввести. Вывести затем данные метки вместе с коммитом можно, используя команду $ git show. Выглядит это так:
Как видим, команда $ git show сначала выводит данные автора тега, после чего идет комментарий, а затем данные коммита в виде контрольной хеш-суммы, которая состоит из 40 знаков. Также указывается автор коммита и дата его создания.
А проверить, что метка была создана успешно, можно при помощи флага -n. Эта команда очень простая:
Создание легковесных тегов
Легковесными тегами называются обычные указатели на коммиты, которые подходят для создания временных меток. Фактически легковесные метки представляют собой сохраненные в файлы контрольные хеш-суммы коммитов. Посмотрим на то, как выглядит код создания легковесной метки:
А теперь попробуем вывести данные тега вместе с коммитом:
Как видим, дополнительной информации о теге нет — только данные коммита. Добавим, что для создания легковесных тегов флаги не используются.
Как добавлять и удалять теги Git в удаленных репозиториях
Для добавления меток Гит во внешние репозитории и удаления из них следует использовать команду push в таком виде:
origin здесь обозначает сокращенное имя первоначального удаленного репозитория, откуда проект был клонирован. Для добавления в репозиторий нескольких тегов используйте флаг --tags вот так:
Удаление меток из внешнего репозитория осуществляется несколькими способами, но наиболее простой — при помощи флага --delete:
А вот если мы введем такой код с флагом -d, который тоже указывает на удаление тега:
то для удаленного репозитория эта команда не сработает: флаг -d предназначен для удаления меток только на локальных, внутренних серверах.
Как переключать теги
Эта процедура выполняется при помощи команды checkout. Набрав в командной строке:
вы перейдете прямо к указанной метке. Однако учтите, что при переходе на теги открепляется указатель HEAD, а потому все последующие изменения будут сохраняться уже в новом коммите, не относящемся ни к одной из существующих веток. И переходить туда можно будет только по контрольной хеш-сумме. Так что не забывайте создавать новые ветки, если вносите изменения при открепленном указателе HEAD, который открепляется после ввода команды checkout.
Как посмотреть список Git-тегов
Делается это довольно просто, при помощи команды git tag, после чего все имеющиеся метки будут выведены ниже в алфавитном порядке. Пример:
А что если теги у нас обозначены по-разному и нам нужно вывести только некоторые, с определенной маркировкой? Для этого используются флаги -l или --list и выражение для поиска по шаблону, обозначаемое звездочками **, между которыми требуется подставить нужные знаки. Допустим, кроме меток из примера выше у нас есть еще такие: ver-1.6xyz, ver-2.5xyz, ver-2.6xyz. Тогда для того, чтобы вывести только их, вводим:
Получаем такой список, где уже нет меток, которые были в первом списке, поскольку они не содержат сочетания символов xyz в своих идентификаторах.
Переназначение или замена тегов
Для обновления существующего тега используйте флаг -f, дающий команду на принудительную замену:
В данном случае указывается также хеш коммита. Это нужно для того, чтобы программа сопоставила коммит с ID аннотированного тега, после чего весь контент для указанной метки будет переопределен. Но помните, что вся старая информация после переназначения метки будет удалена, поэтому применяйте эту функцию с осторожностью.
Резюме
Как видим, использование тегов делает Гит гибкой и удобной системой контроля версий. Представленные команды просты и функциональны, и их сможет быстро освоить даже начинающий разработчик, тем более что шпаргалку, состоящую из самых важных команд и флагов, мы для вас уже подготовили.
Кстати, в официальном канале Timeweb Cloud мы собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать.
