Since your question at its core involves how to deploy a Rails app in a version controlled environment, I'm surprised no-one has mentioned Capistrano or Vlad the Deployer. These popular tools for deployment can serve as a model for how your repository relates to your live app.
Here is the way Capistrano does it. When you tell it to deploy, it creates a new, timestamped directory on your server with the latest version from your repository in it. This timestamped directory is symlinked to the actual directory that your webserver looks at to find your app. Once Capistrano has finished retrieving all the files from git, it switches the symlink to point to the new directory. If you issue the rollback command, it just changes the symlink to point to the next older, timestamped directory (you usually keep a couple of older ones lying around).
The greatest benefit of this model is that changing the symlink instantly upgrades/downgrades every file in your app, so there are no issues of lag or missing dependencies.
You could of course implement this model (or similar) yourself, or you could just use either of these tools to do it for you.