Почему я должен использовать теги или ветки выпуска / бета для управления версиями? - PullRequest
105 голосов
/ 21 марта 2012

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

Должно быть много веских причин для тегирования, а не ветвления, но я хотел бы знать, каковы эти преимущества.

Ответы [ 5 ]

131 голосов
/ 21 марта 2012

Тег неизменный .

Принимая во внимание, что вы можете создать ветку с именем "1.0.0" - вы или кто-либо с правами на коммит также можете просто нажать на эту ветку (сознательно или нет) и изменить значение 1.0.0.

Вы не можете сделать это с тегом, как только вы создадите тег - вот и все; Тэг 1.0.0 означает именно это и не может быть изменен *.

Это основное практическое различие между тегом и веткой

* Вы можете удалить и воссоздать тег, изменив его, но не случайно.

86 голосов
/ 21 марта 2012

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

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

Редактировать: Здесь - это хороший способ использовать git, который я использую для всех своих проектов.

16 голосов
/ 21 марта 2012

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

Вот хорошая рецензия на этот тип рабочего процесса: http://nvie.com/posts/a-successful-git-branching-model/

13 голосов
/ 02 сентября 2016

Ветвь и тег - это одно и то же (указатель на коммит, он же. "ref" ), за исключением того, что ветвь автоматически перемещается к следующему коммиту, в то время как тег остается навсегда 1 на тот же коммит.

При создании релиза вы обычно хотите пометить «снимок» кода, из которого был создан этот выпуск, и вы хотите, чтобы он оставался отмеченным таким образом, даже если вы продолжаете развивать код, поэтому вы будете использовать тег.

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


1 Если, конечно, вы не удалите тег.

ПРИМЕЧАНИЕ: я понимаю, что это старый вопрос, но я чувствовал, что сходство (и одно существенное различие) между ветвями и тегами не было отражено в других ответах так ясно, как могло бы быть.

6 голосов
/ 21 марта 2012

Вы используете теги, чтобы отметить важные коммиты в истории. «Это был именно тот коммит, который мы использовали для этой версии в тот дождливый четверг, когда сломался сервер сборки». Если вы используете ветку вместо тега, вы никогда не узнаете, какой именно коммит вы использовали. Вы знаете только «Мы выпустили версию 1.1.0 где-то в этой ветке», если вы вручную не записали точный хеш для этого коммита, поэтому вы используете теги в первую очередь:)

...