git clone git://yourrepo.com/project.git
Create a tracked remote branch. This means that pulls and push operations are automatically done with the main branch. The track branch might be origin/dev or origin/master. Whichever.
git checkout --track -b mylocalbranch origin/trackedbranch
After that a normal git work flow is done with local commits and such. Occasionally he should,
git pull --rebase
This will perform a rebase operation which rolls back his changes, pulls in the changes made to the remote branch, then replays his local changes on top of that (resolve any conflicts; perform any merges).
When he's done and wants to make those changes live, he should bring things current:
git pull --rebase # get most recent changes
Then, for a bare repository:
git push # push his changes to the main repo
If it's a non-bare repository (like your repository in your home folder or some such), then it's preferred that he notify you that he's ready and then you do the
git pull /path/to/his/repo
It's generally advised not to push to non-bare repositories. The reason being you could have uncommitted changes in your local and when he pushes to it, chaos can ensue details. Kernel trap thread discussing this pit fall