позволю себе дать еще несколько советов, на что стоит обратить внимание:
картинки и прочую весомую статику попрячьте в .gitignore, а для ее передачи используйте rsync с удалением
придумайте mysqldump с исключением таблиц пользователей, покупателей, заказов и т.д., и архивированием gzip'ом
передавайте статику и дамп вместе с push'ем при необходимости
на принимающей стороне бекапьте БД, перед применением нового дампа сохраняйте в отдельных таблицах поля, которые не должны быть переписаны, например, счетчик показов товаров, а после применения дампа, перезаписывайте эти поля на сохраненные, кроме того, в таблице конфигурации меняйте значения dev на актуальные на площадке, все это решается mysql-запросами
отключайте сайт на время импорта, в том числе и админскую часть - в настройках веб-сервера добавьте условие, например, наличие в папке сайта какого-нибудь файла (который будет создан перед импортом и удален после), при котором все http-запросы будут отправляться куда-нибудь на 503
все вносимые изменения должны быть отктатываемы, поэтому бекапы БД принимающей стороны имеет смысл делать потаблично и хранить в отдельном git-репозитории
настройте ssh-доступ по ключам, и погуглите gitolite
деплой должен производиться в автоматическом режиме, собрал-передал-дал команду на импорт-получил ответ-уведомил администратора о результате
простое обновление dev-prod делается одной командой
и есть еще один момент:
по-хорошему, итоговые изменения файлов должны быть применены на промежуточной площадке с реальными данными, отсюда следующий пункт
площадок должно быть минимум 3: dev[0-100], work, prod
как увязать логику обновления файлов и данных в этих обстоятельствах - это уже вопрос на миллион