git pull is really equivalent to running git fetch and then git merge. The git fetch updates your so-called “remote-tracking branches” – typically these are ones that look like origin/master, github/experiment, etc. that you see with git branch -r. These are like a cache of the state of branches in the remote repository that are updated when you do git fetch (or a successful git push).
So, suppose you’ve got a remote called origin that refers to your GitHub repository, you would do:
git fetch origin
… and then do:
git diff master origin/master
… in order to see the difference between your master, and the one on GitHub. If you’re happy with those differences, you can merge them in with git merge origin/master, assuming master is your current branch.
Personally, I think that doing git fetch and git merge separately is generally a good idea.