I have been using post-receive scripts in my git repositories with the following commands to checkout all of the files in the repository:
#!/bin/sh GIT_WORK_
you can use git diff to give you a list of files
git diff
git diff --name-only from..to
in a post-receive hook that'll be I think
git diff --name-only $1..$2
as this hook receives oldrev, newrev and ref on standard input
oldrev
newrev
ref