Как поднять полноценный git сервер?
Нельзя пушить в чекаутнутую ветку. Поэтому и нужен bare.
И по-хорошему, надо бы экспортить код, а не заставлять веб-сервер работать из репозитория. Делается простым хуком на стороне сервера.
Если я правильно понял, то вам надо заливать изменения на сервер и после этого применять их на сервере. Но тогда получается, что нужно 2 репозитория на сервере: тот, куда будет направлен push с локального компьютера и тот, который будет выполнять pull с удалённого (потому что pull с локального сервер сделать не сможет).

Второй реп проще всего сделать в домашней папке, а pull проще всего настроить по cron'у, скажем, каждый день (или полдня).