Based on a post at StackOverflow:
- Create a bare repository inside a Dropbox folder. This would act as a remote repo.
- Inside the local repo, use push --mirror remote_repo_name to make that remote repo look exactly like the local one (except the remote is a bare repository). This will push all refs (branches and tags) including non-fast-forward updates.