fetch is useful to pull changes from an upstream repo to merge some changes.
By default git fetch upstream will update or create all the remote branches locally.
Say you have upstream/master tracked by your local master branch.
Here is how to see the changes between both:
git log master..upstream/masterThis essentially means "all commits from upstream/master excluding commits from local master". For more info see gitrevisions(7).