Работа с метками

Как и большинство систем контроля версий, Git имеет возможность помечать определенные моменты в истории как важные.

Как правило, эта функциональность используется для того, чтобы пометить моменты выпуска версий (v1.0, и т. п.). В этом разделе вы узнаете, как посмотреть имеющиеся метки, и как создать новые. Также вы узнаете, что представляют собой разные типы меток.

Просмотр меток

Просмотр имеющихся меток в Git делается просто. Достаточно перейти в панель Репозитории Git и раскрыть ветку Метки вашего репозитория.

Меток может быть много. Чтобы найти среди них нужную, можно воспользоваться возможностью фильтрации: нажать Filter Tags... в контекстном меню на узле Метки. В поле ввода можно ввести фрагмент метки и 1C:EDT покажет только подходящие метки.

Создание меток

Чтобы создать метку для текущего коммита в панели Навигатор нажмите Групповая разработка > Расширенные возможности > Создать метку... в контекстном меню проекта. Откроется диалог создания метки.

В поле Tag name введите имя метки, а в поле Tag message — сообщение, которое будет храниться вместе с меткой. После этого нажмите Create Tag.

Метки вы можете видеть не только в панели Репозитории Git, но и в панели История, рядом с соответствующими коммитами.

Выставление меток позже

Также вы можете помечать уже пройденные коммиты. Для этого удобнее всего использовать панель История, и контекстную команду Создать метку... на нужном вам коммите.

Также вы можете помечать недавние коммиты и из панели Навигатор. Когда вы создаете новую метку (Групповая разработка > Расширенные возможности > Создать метку...), раскройте в диалоге группу Дополнительно и выберите тот коммит, который вас интересует.

Обмен метками

По умолчанию команда Групповая разработка > Push to origin не отправляет метки в удаленные репозитории. Их необходимо отправить в явном виде. Сделать это можно несколькими способами.

Во-первых, в диалоге создания метки вы можете нажать не Create Tag, а Create Tag and Start Push..., чтобы сразу отправить метку.

Во-вторых, в панели Репозитории Git вы можете контекстными командами Отправить метки... и Отправить метку... отправить сразу все, или только одну выбранную метку в удаленный репозиторий.

Теперь, если кто-то склонирует ваш репозиторий или получит из него изменения, то он получит вдобавок к остальному и ваши метки.

Переход на метку

Если вы хотите просмотреть версии файлов, на которые указывает метка, вы можете извлечь коммит, помеченный этой меткой. Для этого в панели История, на нужной вам метке, выполните контекстную команду Извлечь.

Однако нужно учитывать, что такая операция переведет ваш репозиторий в состояние «отсоединенный HEAD», и 1C:EDT предупредит вас об этом.

Более подробно ветвление будет рассмотрено в разделе Ветвление в Git, поэтому сейчас вы только кратко познакомитесь с особенностями такого состояния репозитория.

HEAD это специальный служебный указатель, который указывает, в нормальном состоянии, на конец какой-либо ветки, например, feature/issue-20, которая находится в вашем рабочем каталоге. Такое положение HEAD позволяет вести историю изменений, выполненных в этой ветке.

Когда вы извлекаете метку, HEAD отрывается от ветки, и перестает на нее указывать.

Если в этом состоянии вы выполните какие-то изменения и зафиксируете их, метка останется той же самой, но ваш новый коммит не будет принадлежать никакой ветке и будет недоступен.

Таким образом «отсоединенный HEAD» это вполне нормальное состояние, если вы хотите только посмотреть состояние вашей конфигурации на какой-то момент, отмеченный меткой. Если же вы хотите вносить изменения начиная с этого момента, то после того, как вы извлекли метку, сначала создайте новую ветку (в примере — bugfix/4678), а потом уже изменяйте конфигурацию.

По материалам книги Pro Git (авторы Scott Chacon и Ben Straub, издательство Apress). Книга распространяется по лицензии Creative Commons Attribution Non Commercial Share Alike 3.0 license.