Looking up the difference between `git pull` and `git fetch`, many sources say that `git pull` is a superset of fetch, i.e. `git pull` is fetch + merge.

However, I seem to remember many times where `git pull` told me that everything was up to date, but fetch yielded new information.

Can someone explain this discrepancy between theory and reality?