I'm guessing what you mean is that the remote repository has a working directory that is a live web site. You want to deploy changes to your web site by pushing those changes to the remote repository and have the changes automatically applied to the working directory, i.e. the live web site.
What you want to do is set up the remote repository with a post-receive hook that will checkout the new files.
Git's defaults are set up assuming that changes in a working directory are important and should not be easily blown away. This is because the defaults are designed for the working directory to be an actual directory where the user is working, making changes, etc. For a repository acting as a live web site this assumption doesn't hold and so the default behavior doesn't work very well.
In particular, pushing to a remote repository will update branches and the git index on that repository but will not make any changes to the working directory. This makes it appear as though there are changes in your working directory which simply undo whatever work was just pushed.
You can take the command you've already found, git checkout --force
and put this in a post-receive
hook, and any time you push changes the repository will checkout the new files. This blows away any changes you have in the working directory, but presumably those 'changes' will never be anything but the fake changes that just undo the pushed changes. If you ever manually edit anything in the remote repository's working directory you risk losing those edits.
Another option is to have the repository on your web server be a --bare repository, as remote repositories normally should be. Instead of having a working directory that also serves as the live web site, have the post-receive hook script run commands to deploy the web site to another location.
http://krisjordan.com/essays/setting-up-push-to-deploy-with-git