@b0rk for me it's usually like this:
First I do "git pull" (without arguments) to get the latest stuff.
Then I make local changes and test them and mess around with the code in other ways, locally.
Then, before doing commit, I do "git pull" again (again without arguments). This is because I want to avoid trouble as much as possible in case someone else made changes in the meantime.
Then I do "git add" and "git commit" a few times.
Then I do "git push" (without arguments)