"git checkout tag-name" vs "git reset --hard tag-name"
Я знаю, что есть такие вопросы, как , но это не то, о чем я прошу.
Я также знаю, что:
git checkout tag-name
:
- Отделяет вас от ветки. (т.е. перемещает указатель
HEAD
, сохраняет указатель BRANCH
)
git reset --hard tag-name
:
- Не отделяет вас от ветки, но делает предыдущие коммиты "свисающими". (т.е. перемещает указатели
HEAD
и BRANCH
)
Интересно, какой из них имеет смысл для обновления к тегу, т.е. если произведение будет сброшено или извлечено. Я знаю, что сборщик мусора может работать, удаляя оборванные коммиты, но опять же, если производство всегда "вытягивается" до процесса обновления в тег, я не вижу ничего плохого.
Должно ли производственное обновление тега с reset
или checkout
, учитывая, что a pull
всегда выполняется до этого вызова обновления?
Ответы
Ответ 1
Интересно, какой из них имеет смысл для обновления тега
Ваша производственная установка должна проверять тег.
Подумайте об этом так: ваша производственная установка доступна только для чтения. git reset --hard tag-name
изменит текущую отмеченную ветку.
В качестве альтернативы
Общепринятая практика заключается в том, что помимо создания тега у вас есть одна ветка, которая является просто последней версией. В этом случае вы, например, слияние для создания и создания тега; и на ваших производственных установках вы обновляете просто с помощью git pull (на master).