I use sshfs (my hosting don't permits Shell Acess) to mount my "sftp" server
on my filesystem and it works welll (a litle bit slow, but works).
sshfs -o workaround=rename user@host:/home/user/ ~/web/hosting/
With this command I can just do:
cd ~/web/hosting/my_project/
git clone ~/projects/my_project
git-checkout -b production
#performs some server specific modifications
git-checkout master
git-merge production
#work offline iin my project on ~/projects/my_project/
cd ~/web/hosting/my_project/
git pull # and my project is up-to-date
fusermount -u ~/web/hosting/ # to unmount
from Brazil
Felipe