At work, we have different workflows from rsync and ssh into the machine, running a build script to git pull.
For my pet project, I work with git push to the production server. Works pretty well with git post-recieve hook and phing (ant for php) targets to update dependencies (through composer) and doing some health checks.