Почему я должен использовать теги против ветвей release / beta для управления версиями?


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

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

5 85

5 ответов:

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

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

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

тег неизменяемые.

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

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

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

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

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

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

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

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

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


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

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

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