Фактически, git pull — выполняет комманду git fetch, после которой сразу же следует комманда git merge.
git fetch же, просто получает изменения с сервера и сохраняет их в refs/remotes/.
git fetch никак не влияет на локальные ветки и текущие изменения. git pull наоборот, вливает все эти изменения в локальную копию.