Вы неправильно поняли второй вариант git pull --rebase origin master,
он убирает ваши локальные коммиты, обновляет ветку (обычно это fast-forward), и потом после обновления снова применяет ваши коммиты.
А git fetch обновляет ваш origin репозиторий, но не применяет полученные изменения с вашими рабочими копиями