Если компания дорожит качеством продукта и безопасностью данных своих клиентов, то сборка и выкат новой версии проводится автоматически Continuous Intrgration сервером. У программистов вобще нет доступа к проду. Доступ к проду есть только у CI-сервера. У программиста есть доступ только к GIT репозиторию проекта. Вся работа проводится в своём окружении и в отдельной ветке. Затем ветка тестируется на тестовом окружении (близком к продакшену), если надо правится, и затем вливается в главную ветку проекта. После этого CI подхватывает изменения, билдит фронт и бэк и выкатывает это дело на прод. Это очень общий вариант. Там есть куча нью-ансов.
Лично я предпочитаю идти по вышеописанному пути с первого дня работы даже когда работаю один. Потому что в этом случае ты всегда можешь откатиться на последний стабильный релиз, уйти дамой и доделать всё на следующий день. Вместо того чтоб с выпученными глазами и трясущимися губами всю ночь что-то там фиксить (что есть признаком очень низкокачественного проекта).
UPD
Забыл сказать, что этот путь не даётся легко. Нужно потренироваться где-то полгодика. Но зато на всю жизнь получаешь спокойные ночи и здоровый цвет лица, так что оно того стоит.