В чём разница между «git pull» и «git fetch»?

Фактически, git pull — выполняет комманду git fetch, после которой сразу же следует комманда git merge.

git fetch же, просто получает изменения с сервера и сохраняет их в refs/remotes/.

git fetch никак не влияет на локальные ветки и текущие изменения. git pull наоборот, вливает все эти изменения в локальную копию.