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