I've used to using Github as a backup or a central repository and doing both development and testing locally.

Now I have a remote test machine and want to be able to push local commits to the remote such that the remotes working directory updates, allowing me to run tests on the contents.

1) Most of the instructions I have found for setting up remotes is to use a --bare init. As far as I understand, this means the remote lacks a working directory and accepts pushes. Setting up a remote without --bare fires an error when I try and push. How can I accomplish the above workflow?

2) Is this workflow even a good idea? Should I instead have a test repo located on the remote machine in addition to the bare repo. I make my pushes from development to the bare repo and then, when I am ready to test, I pull from the bare repo into the test repo.

In case it matters, I asking in relation to a Rails project but I haven't tagged this question as such because I can't see why it would.