It notices that origin has commits that you don't have and rejects your push. Then you pull the change that happened in the meantime, merge/rebase your change again on top of that, and push again.
If we're recommending books on Git, I recommend Pro Git. It's free online. http://git-scm.com/book
If we're recommending books on Git, I recommend Pro Git. It's free online. http://git-scm.com/book