Quando você está usando um repositório Git como repositório central (como você parece ser), geralmente você não deve ter um diretório de trabalho nesse repo. A razão para isso está listada no erro que você mencionou: o envio para uma ramificação com check-out pode fazer com que a árvore de trabalho fique fora de sincronia.
Se as pessoas com as quais você está compartilhando puderem usar o Git, você poderá configurar um repositório vazio no servidor e, em seguida, enviar para ele.
# On the server
git init --bare ~/project.git
# On your computer
git remote add origin ssh://[email protected]/~/project.git
git push origin master
# On everyone else's computer
git remote add origin http://example.com/~david/project.git
git pull origin master
git checkout master
Se eles não puderem usar o Git, você precisará de um fluxo de trabalho um pouco mais complicado:
# On the server, once
git init ~/project
git config receive.denyCurrentBranch ignore
# On your computer
git remote add origin ssh://[email protected]/~/project
git push origin master
# On the server after each push
cd ~/project
git reset --hard
Após este passo, os arquivos devem estar disponíveis em /project