Как развернуть файлы из разных веток Git в разные папки на сервере? - PullRequest
0 голосов
/ 04 ноября 2018

Я ищу несколько направлений для правильной настройки Git для среды производства / разработки для проекта PHP. Я пытаюсь создать его, и я как бы застрял в том, как это сделать правильно, даже после нескольких дней поиска ответа.

У меня есть:

  1. IDE (NetBeans)
  2. Производственный сервер
  3. Субдомен на том же сервере, который я хотел бы использовать в целях разработки. Я знаю, что это может быть не лучшее решение, но, по крайней мере, пока оно может работать, позже я планирую переместить его на другой сервер.

На сервере установлен Git, так же, как на моем клиентском компьютере. У меня есть две ветви - dev и production. План состоял в том, чтобы протестировать все в ветке dev, затем объединить ветви и развернуть их в производство.

Однако я нигде не могу найти, как правильно использовать Git в этой настройке. Я помещаю ветку в хранилище на сервере, затем собираюсь развернуть файлы в определенной папке, в зависимости от ветви (dev или prod).

Я выполняю это:

git clone --shared --branch dev myproject.git /var/www/vhosts/dev.mydomain.com/httpdocs/
rm -rf /var/www/vhosts/dev.mydomain.com/httpdocs/.git

Впервые работает, когда папка пуста, но git не позволяет клонировать папку, когда в ней уже есть файлы. Конечно, я могу удалить все из папки, но это кажется неправильным, особенно на рабочем сервере.

Итак, главный вопрос - как мне обновить только файлы, которые были изменены, не касаясь остальных? Или, может быть, я все делаю неправильно, и это должно работать совершенно иначе? Я прочитал руководство по git и множество других веб-сайтов, посвященных git, но либо я слишком глуп, либо нет ответа на этот вопрос.

1 Ответ

0 голосов
/ 04 ноября 2018

Допустим, вы создали две разные ветви (dev, prod) одного и того же репо:

git clone --shared --branch dev myproject.git /var/www/vhosts/dev.mydomain.com/httpdocs/
git clone --shared --branch prod myproject.git /var/www/vhosts/prod.mydomain.com/httpdocs/

Вы можете легко обновить папку, не удаляя ее, потянув за каждый каталог:

cd /var/www/vhosts/dev.mydomain.com/httpdocs/ && git pull
cd /var/www/vhosts/prod.mydomain.com/httpdocs/ && git pull

Просто убедитесь, что в вашем репо нет файлов, которые могли бы перезаписать ваши локальные изменения. Одним из примеров этого будет файл конфигурации. Вы должны создать файл конфигурации config.ini.example, которым управляет git, а затем добавить строку config.ini в файл .gitignore в той же папке, чтобы ваша локальная конфигурация не управлялась git.

В качестве дополнительного примечания рекомендуется с точки зрения безопасности иметь разные физические машины, обслуживающие разрабатываемую и производственную версии вашего сервиса. Вы должны стремиться к этому, если ваши ресурсы позволяют это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...