Как и большинство систем контроля версий, Git имеет возможность помечать определенные моменты в истории как важные.
Как правило, эта функциональность используется для того, чтобы пометить моменты выпуска версий (v1.0, и т. п.). В этом разделе вы узнаете, как посмотреть имеющиеся метки, и как создать новые. Также вы узнаете, что представляют собой разные типы меток.
Просмотр имеющихся меток в Git делается просто. Достаточно перейти в панель Репозитории Git и раскрыть ветку Метки вашего репозитория.
Меток может быть много. Чтобы найти среди них нужную, можно воспользоваться возможностью фильтрации: нажать Filter Tags... в контекстном меню на узле Метки. В поле ввода можно ввести фрагмент метки и 1C:EDT покажет только подходящие метки.
Чтобы создать метку для текущего коммита в панели Навигатор нажмите в контекстном меню проекта. Откроется диалог создания метки.
В поле Tag name введите имя метки, а в поле Tag message — сообщение, которое будет храниться вместе с меткой. После этого нажмите Create Tag.
Метки вы можете видеть не только в панели Репозитории Git, но и в панели История, рядом с соответствующими коммитами.
Также вы можете помечать уже пройденные коммиты. Для этого удобнее всего использовать панель История, и контекстную команду Создать метку... на нужном вам коммите.
Также вы можете помечать недавние коммиты и из панели Навигатор. Когда вы создаете новую метку ( ), раскройте в диалоге группу Дополнительно и выберите тот коммит, который вас интересует.
По умолчанию команда
не отправляет метки в удаленные репозитории. Их необходимо отправить в явном виде. Сделать это можно несколькими способами.Во-первых, в диалоге создания метки вы можете нажать не 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.