А какие цели эта заливка преследует? (От этого зависит целесообразность подхода).
У меня, например, при разработке сайта с бэком на PHP такая связка:
3 сервера 😄:
Прод (боевой), дев - тестовый на +/- такой же vps как и дев.
И на виртуальной машине локально.
Софт:
1. Git везде (локально, на серверах, на сервере виртуалки).
Через git pull стягиваю уже проверенные обновления на сервер из ветки master. Сначала дев для тестов, потом на прод. На них руками обычно ничего не заливаю и не редактирую. Иногда добавляю изменения и отправляю в репозиторий, если что-то в админке было изменено и затронуло файлы в индексе гита.
2. Для разработки у меня развернута виртуальная машина. Изменения в файлах шаблонов (то что с бэком связано) автоматически отслеживаются и при изменении файла загружаются на сервер с помощью расширения
https://marketplace.visualstudio.com/items?itemName=liximomo.sftp - позволяет перекидывать файлы на сервер и с него, может работать через ssh
3. Для работы с фронтовой частью сборщик webpack, webpack-dev-server для горячей перезагрузки, инъекции стилей "на лету" и т.п. плюшек.
И тут есть хитрый момент, до которого я не сразу дошел. Настроено это всё так, что webpack-dev-server получает данные с удаленного сервера, проксирует соответственно на локальный сервер, который обычно создается. При этом не нужные файлы - оригинальные скрипты и стили с удаленного сервера - вырезаются. Инъектятся, как обычно - стили и JS которые были собраны вебпаком на лету.
Таким образом при работе с фронтом - работаешь с актуальным состоянием верстки с удаленного сервера, но при этом подменяешь скрипты и стили на свои. Нет необходимости что-то заливать на сервер. Работает автоматическое обновление страницы в браузере при изменениях кода.
Потом, когда доходишь до логического завершения - как обычно вебпаком собираются файлы для прода и загружаются на него. Я не парюсь и тупо отслеживаю в гите эти файлы и через пулы подтягиваю на сервера. Это не самая лучшая практика, т.к. в минифицированных файлах стилей и js по коммитам все равно изменения будут не понятны, но это тупо удобно в плане сохранения и загрузки данных )))
Подозреваю что есть более совершенные подходы, например использование механизмов автоматического деплоя и т.п., но пока не хватило времени их изучить и применить )