You have a good example about git merge and fast forward on a linked website.
@MicroVirus gave a good explanation. Below, the gray dot is the HEAD of your local HEAD before extraction (fetch + merge). You can see the difference between the two methods of merging.

(source: ofilabs.com )
Another way to update a repo with git pull is to use the --rebase option. This option applies your commits at the top of the branch, rewriting the story. You can read the details there . People are divided between using git pull or git pull --rebase . In my opinion, rebase should be used to fix the error, instead of the classic traction, it should be used when a new function is combined with master.
Git ReBase Example 
Read the link below to get an idea of ββthe different points of view:
Flows
source share