Maybe you've seen the great article on Drupal Deployment with Git Submodules, by Randy Fay. I manage this site using that strategy, but some times I forget how every operation is done. So here I'm collecting them for my own reference.
For fetching all the new info from submodules:
git submodule foreach git fetch origin
Now we go into each module folder and use:
git pull
If we wanted to switch to a different branch, we should use:
git branch -a # we see the available branches
git checkout 7.x-2.x # the different branch
For committing it, we go back to the contrib folder and do:
git add contrib-module-name
Then, we use:
drush updb --debug -y
Maybe we see some warnings because of unresolved dependencies. In that case, add the new submodule:
git submodule add --branch 7.x-1.x git://git.drupal.org/project/entity.git sites/all/modules/contrib/entity
Finally, updating core:
git merge drupal/7.x drush updb --debug -y
Ok, so we've done this on our DEVELOPMENT site. If everything is OK, now it's time to update the server, after doing a backup:
git pull
git submodule update --init
drush updb --debug -y