для точного воспроизведения окружения, если оно нужно - как вы и написали: докер или вагрант, что вам проще/удобнее.
обновление - если у вас обновление состоит только в обновлении файлов, то сгодится и гит. но часто кроме обновления файлов требуется еще вспомогательная работа (оптимизация изображений, компиляция css/js, минификация/объединение css/js, запуск миграций и т.п.). поэтому обычно для этого используют инструменты или сервисы деплоя.