I have a remote repository for a website which I am developing on my local machine.
I use git flow for neat branching model, so my branches are:
git flow
You should push to master on a bare repo.
Then a post-receive hook can checkout that bare rpeo on your live server.
cd /path/to/bare/repo.git GIT_WORK_TREE=/path/to/live/server git checkout -f