Есть несколько способов сделать это. Если у вас есть возможность запустить ssh-сервер на вашем VPS, это довольно просто.
В вашем git-репозитории на localhost вы установите два git-пульта. У них будет один и тот же хост, но разные пути (один удаленный для пути dev и один для пути prod).
git remote add prod ssh://[user@]host.xz[:port]/path/to/prod/repo.git/
git remote add dev ssh://[user@]host.xz[:port]/path/to/dev/repo.git/
И если вы настроите ssh доступ с открытым / закрытым ключом, вам не нужно будет каждый раз вводить пароль.
Как только вы внесете необходимые изменения в репозиторий на localhost, вы сделаете это, чтобы отправить их в среду разработки:
git push dev # remote named dev points to dev repository
После того, как они проверены, вы можете отправить их в производство (из репозитория на localhost):
git push prod # remote named prod points to prod repository
Если вы собираетесь изменить репозиторий git на localhost между нажатиями на dev и prod (кроме исправлений, которые вы хотите применить), то есть много способов решить эту проблему:
- ветвь или тег перед нажатием кнопки dev и push вместо основной ветки (рекомендуется в любом случае по другим причинам).
- сделайте копию репо на localhost и нажмите на нее.
- ветвь перед внесением изменений и добавьте ветвь вместо основной.
- войдите в систему VPS и просто нажмите (или потяните) от разработчика к репозиторию продуктов
Это не покрывает половину ваших вариантов, но, возможно, достаточно, чтобы задуматься.