If your remote repsitory is a bare shared repo, then there is no copy of the files.
you can change this, and then you'll just have to run an auto checkout.
if your packaging hte files, best to have the repo in a seperate directory too
I use the following for the exact purpose you've named
here is the blog post that showed me how to set it up
http://toroid.org/ams/git-website-howto
here are my abbrieviated notes below
make a directory outside the repo and put the working tree there, then make it no longer a bare repo so there is a copy of the files, then run a before you run your packaging script
# create the repo with files that live in a seperate folder
cd /share/proj/all/$1/repo
git --bare init --shared
git config core.worktree ../actual
git config core.bare false
git config receive.denycurrentbranch ignore
# add a hook to checkout the repo into the files directory automatically on push
echo "#!/bin/sh" > hooks/post-receive
echo "git checkout -f" >> hooks/post-receive
chmod +x hooks/post-receive