Я не уверен, какой у вас первый вопрос, но я могу ответить на второй вопрос для вас.
Просто отметьте каждый выпуск.«v1.0», «v1.1», «v2.0».Теги полностью отделены от веток, поэтому то, как вы решите обрабатывать теги, не зависит от того, как вы решите обрабатывать ветви.
Например, если ваш репозиторий выглядит так:
A--B--C--D--E <- master
\
--C'-D'-E' <- test_branch
Вы можете применить тег к ветке E'
и безопасно удалить test_branch
, не теряя код в E'
.По этой причине люди редко используют ветки git для исторических выпусков.Пометьте выпуск номером версии и не стесняйтесь удалять любые ветки, которые вам больше не нужны.
FWIW, я также использую эту технику, чтобы свести мои ветви к минимуму.Если я пойду по тупиковому пути разработки новой ветки, я могу пометить эту ветку (на всякий случай) и удалить ветку.Если мне когда-нибудь понадобится этот код снова, я могу перехватить его через тег.
Редактировать re: ваши комментарии.
Точно моя точка зрения: «один тег ссылается на один коммит«?Это вроде отстой, нет?
Не думаю, что это отстой.Если вы хотите сохранить ссылку на определенный момент времени, вы используете тег, если вы хотите сохранить ссылку на набор изменений, вы используете ветвь.
@ VonC упомянул о git-description.Это то, что я использую для ввода номеров версий во весь мой код.Все, что публикуется, будет всегда получать тег, поэтому git describe
возвращает что-то вроде "v1.0".Внутренние тестовые выпуски будут помечены чем-то вроде «v1.0-10-abcd1234», что означает, что я на 10 коммитов выше тега v1.0 и дает хэш, чтобы я мог легко получить доступ к этому коммитунепосредственно.