Как настроить и использовать проект на Git в phpStorm для работы на тестовом сервере?

У меня есть боевой сайт и его копия, на которой я веду разработку. Оба сайта подключены к Git. 

В настоящее время моя работа выглядит следующим образом: я подключаюсь к сайту через SFTP в PHP Storm, выполняю правки, а затем использую SSH для работы с Git, чтобы пушить изменения и обновлять боевой сайт.

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

Я пробовал настраивать синхронизацию файлов через FTP, но при переключении веток локально в PHP Storm изменения не отправляются на FTP (хотя если я вношу изменения в файлы локально, синхронизация работает). 

Можете ли вы предложить варианты оптимальной работы с Git, PHP Storm и тестовой средой? 

P.S. Я не рассматриваю вариант разработки на локальном сервере.
  • 6 октября 2024 г. 9:04
Ответы на вопрос 3
Настройка рабочего процесса с Git и PHPStorm для работы с тестовым сервером может быть выполнена несколькими способами. Если вы хотите избежать работы с Git через SSH, но при этом синхронизировать изменения с тестовой средой, вот несколько рекомендаций:

### 1. Локальная работа с Git и постоянная синхронизация

Вы можете организовать свой рабочий процесс так, чтобы вносить изменения локально, а затем синхронизировать их с тестовым сервером. Вот один из способов:

#### Шаги:

1. **Клонирование репозитория**:
   - Клонируйте ваш репозиторий на локальный компьютер с помощью команды:
     ```bash
     git clone <URL вашего репозитория>
     ```

2. **Настройка PHPStorm**:
   - Откройте проект в PHPStorm, указав путь к клонированной папке.
   - Убедитесь, что у вас настроен Git в PHPStorm (File > Settings > Version Control > Git).

3. **Настройка SFTP для тестового сервера**:
   - В настройках PHPStorm (File > Settings > Build, Execution, Deployment > Deployment) добавьте новый SFTP-сервер.
   - Укажите параметры подключения (хост, имя пользователя, пароль/ключ).
   - Настройте корневую папку (обычно это путь к вашему проекту на тестовом сервере).

4. **Использование "Automatic Upload"**:
   - В разделе "Deployment options" выберите автоматическую загрузку файлов (флажок "Always upload files" или выберите подходящий режим).
   - Убедитесь, что выбрана опция автоматической загрузки только изменяемых файлов.
   
5. **Работа с Git**:
   - Вносите изменения в локальной репозитории, коммитьте и пушьте изменения в удаленный репозиторий так, как обычно.
   - Когда вы готовы синхронизировать изменения с тестовым сервером, просто выполните команду "Upload to" в PHPStorm.

6. **Синхронизация изменений с тестовой среды**:
   - Для обмена данными между тестовым и боевым серверами организуйте соответствующие ветки и сливайте их, когда это необходимо. Это можно делать по аналогии с локальной репозиторием.

### 2. Пользуйтесь функцией "Synchronize" в PHPStorm:

Если вам необходимо периодически проверять, есть ли изменения на тестовом сервере, вы можете использовать функцию "Synchronize" в PHPStorm, которая позволяет сравнивать локальные файлы с удаленными и обновлять их при необходимости.

### 3. Автоматизация процессов

Для автоматизации процессов вы также можете рассмотреть использование различных инструментов CI/CD или даже простых сценариев на bash для автоматической синхронизации или деплоя на тестовом сервере.

### 4. Ведение и разрешение конфликтов

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

### Заключение

Предложенный процесс позволяет вам работать в лице локального репозитория с удобным редактированием и автоматической загрузкой изменений на тестовый сервер. Так вы сможете упростить работу с Git и избежать неприятных сюрпризов при интеграции.
Попробуй посмотреть в сторону CI/CD подхода. 
Условно, это когда некий скрипт мониторит изменения, которые ты запушил в репу. И автоматически (или по кнопке) запускает процесс заливки на нужный сервер (тестовый и/или прод). Туда же можно добавить прогон тестов и сборку.

Тоесть процесс будет например такой: локальные правки -> пуш в ветку разработки репозитория -> синк с тестовой средой -> если всё ок - пуш в мастер -> синк с продом.

Есть много решений, можно начать с GitHub Actions
Ну самое простое (извините, если глупость написал, но сам использовал) — это git hooks, напр. post-receive. 

Плюс у вас противоречие:
> хотелось бы работать с проектом локально
> на локальном сервере не рассматриваю
Похожие вопросы