Вопрос по git – «Git checkout tag-name» против «git reset --hard tag-name»

15

Я знаю, что есть такие вопросы, какэт но я не об этом спрашиваю.

Я также знаю, что:

git checkout tag-name:

Отбирает тебя из ветки. (т.е. движетсяHEAD указатель, держитBRANCH указатель)

git reset --hard tag-name:

Не отсоединяет вас от ветки, но делает предыдущие коммиты "зависшими". (т.е. перемещает обаHEAD а такжеBRANCH указатели)

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

Должно ли производственное обновление к тегу сreset илиcheckout, учитывая, чтоpull всегда выполняется до этого обновления?

Ваш Ответ

1   ответ
14

Ваша производственная установка должна проверять тег.

Подумайте об этом: ваша производственная установка доступна только для чтения.git reset --hard tag-name изменит текущую извлеченную ветку.

В качестве альтернативы

Обычной практикой является то, что помимо создания тега у вас есть одна ветвь, которая является просто последней версией. В этом случае вы бы, например, объединить с мастером и создать оттуда тег; и на ваших производственных установках вы просто обновитесь с помощью git pull (на master).

Похожие вопросы