Не скажу за опенкарт и гит, но мы у себя используем hg(думаю тоже можно и на гите) и процесс выглядит примерно следующим образом:
На сервере два домена - основной и тест.основной. Все пуши идут на тест.основной, на нём настроен хук, на изменение репо, который выталкивает всё в основной.
На тест.основной ветка всегда тест, на основном default.
Сейчас переползаем на bitbucket для Code Review, там будет хук который дёргает домен, на сервере затем следует pull с битбакета и пуш на основной. Как-то так.
2. Автоматом можно, смотрите в сторону хуков, у вас там же будет репо, но всегда на одной ветке. FTP вообще бы не рекомендовал использовать для синхронизации файлов.
3. БД да, у нас с ней проблема, договариваемся, таскаем бекапы, но по хорошему стоит добавить систему миграций.
4. Не могу ничем помочь)
P.S. Так же настроены хуки, чтобы не коммитить напрямую в тест, не давать сливать из теста в основную ветку или разрабатываемую, только в тест можно вливать. Ещё хук на то чтобы не коммить в дефолт напрямую, только сливать. И ещё чтобы тест нельзя слить с основной веткой