Отказ от ответственности: лично я довольно скептически отношусь к использованию Git в качестве инструмента развертывания. Реальный инструмент сборки / развертывания будет предлагать много вещей, которые Git не делает: правила создания версий, компиляцию / предварительную обработку, управление правами доступа к файлам и т.д. Если вы "развертываете" с помощью Git, эти шаги обычно должны выполняться вручную, что отстой. Однако вы, похоже, в принципе удовлетворены процессом развертывания, поэтому я перестану с этим спорить.
Чтобы ответить на ваши вопросы:
Вопрос: Должен ли я запускать / проверять основную ветку или помеченную версию master на производственной коробке?
Оба могут работать, но я бы предпочел использовать теговую версию. Вытащенные файлы будут точно такими же, поэтому никакой разницы нет. Однако в некоторых случаях использование версии с тегами безопаснее:
- Если кто-то должен стремиться освоить время между пометкой и развертыванием, вы все равно получите правильную версию.
- Если кто-то позже запустит
git pull
на производстве, с настройками по умолчанию и проверенным master
, Git извлечет последнее состояние master
(что бы это ни было). Если тег извлечен, ничего не изменится.
Я знаю, что работа с помеченной версией будет делать это в отсоединенном состоянии, но я не вижу проблемы с этим, за исключением случаев, когда нужно сделать исправление?
Я действительно надеюсь, что вы не намекаете на то, что вы собираетесь устанавливать (и, возможно, даже разрабатывать) исправления в процессе производства? Если да, то, пожалуйста, не надо :-).
В любом случае: да, состояние отсоединенного HEAD не должно быть проблемой. Я бы на самом деле видел в этом выгоду, так как он дает понять, что вы не должны совершать какие-либо действия на производстве. Если вы действительно, действительно чувствуете, что должны, вы всегда можете создать и оформить ветку позже, когда вам это нужно (но, пожалуйста, не надо).
Наконец, несколько советов:
Затем в рабочей коробке мы извлекаем и объединяем последнюю версию master (запустив git pull origin master)
Даже если вы настаиваете на использовании Git для развертывания, не стоит использовать git pull
, потому что git pull
автоматически выполнит слияние, если ранее была проверена неправильная ветвь (или если у вас даже есть локальные коммиты, которые вы надеетесь сделать «т). Объединение приведет к тому, что у вас будет (непроверенный) набор данных из разных веток. Скорее, я бы порекомендовал вам использовать:
git fetch
git checkout MY_VERSION_TAG
Таким образом, вы получите именно файлы из MY_VERSION_TAG
. Кроме того, я настоятельно рекомендую вам проверять наличие локальных изменений с использованием git status
перед развертыванием. Если таковые обнаружены, исследуйте их перед развертыванием.