Отказ от ответственности: лично я довольно скептически отношусь к использованию 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
перед использованием. Если таковые обнаружены, исследуйте их перед развертыванием.