Как правильно собирать сайт с помощью git?
Если к серверу есть доступ через SSH (а у большинства хостеров он есть), то не нужны никакие посредники.
Ставите гит и он прекрасно живёт внутри домашней папки даже.
То есть рутовые права не нужны чтобы гит поставить.
Ну а репозиторий гита - это тоже просто папка.
В принципе, наверное можно поискать и возможно есть способы организовать доступ к репозиторию и через фтп.
Кстати, как вариант, вы можете примапить ФТП как сетевой диск к локальной машине.
Тогда на удаленной машине даже гит ставить не надо, все можно делать на локальной машине.
Во всяком случае, в линуксе это делается без проблем.
1. правильный подход. gitflow вам в помощь
2. обычно сервер посредник может это делать. Например codeship.io (100 деплоев в месяц бесплатно), можно установить свой сервер (VPS/VDS) и настроить Jenkins,TeamSity,PhpCI 
3. есть phing который может автоматизировать рутинный операции (подготовка очистка каталогов,миграции,js-css min и т.д.)
4. через миграции, если нет таковых есть сторонние https://phinx.org, также в комплекте orm еть инструмент миграций например у Propel2, на крайняк в том же phing есть миграции