I have been working with websites for a while and also with different web hosts. The default way to upload content is through FTP but it takes a lot of time because upload the entire site each time. Some web hosts  have ssh and git, which is great for deployement because you can keep track of the versions and also upload only the files that changes.

 
In order to use git for local development and ftp (for hosting that doesn't support git/ssh) there are some options:
 
https://github.com/resmo/git-ftp - Git powered FTP client written as shell script.
https://github.com/ezyang/git-ftp - A quick and efficient way of pushing changed files to a website via FTP using python.
 
I have use ezyang/git-ftp to deploy my drupal websites with good results.
 
1. Install 'git-python' first from http://gitorious.org/git-python -or- using easy_install gitpython
3. You can create an alias for easy access in ~/.bash_profile such as alias git-ftp="python ~/git-ftp/git-ftp.py "
4. Just run the command python ~/git-ftp/git-ftp.py where is your git repository that you want to upload. I will prompt all the ftp details and also will create the config file for you.
 
You might want to setup files to ignore. If you are using drupal you should create a .gitignore file with a content similar to this:
 
.DS_Store


# Ignore configuration files that may contain sensitive information.

sites//settings.php


# Ignore paths that contain user-generated content.

sites//files

sites/*/private