git pull == git fetch && git merge -- затащить из сервера (по умолчанию origin) изменения, и создать мёрж-коммит, в котором будет слияние изменений (по умолчанию мёржим из дефолтнтного origin сервера ветку, с которой связана наша текущая ветка, в твоем случае мастер связан с origin/master)
Итак имеем у тебя
origA - origB - origC - дальше идет вилка
1. yourD
2. origD - origE (origin/master)
Дальше 1 и 2 сливаются в новом коммите
mergeYourAndOrigin (master, HEAD)
Если ты посмотришь на родительский коммит мёрд коммита, то увидишь, что у него два коммита родителя. Если бы ты просто сделал git fetch, то получил бы
origA - origB - origC - вилка
1. yourD (master, HEAD)
2. origD, origE (origin/master)
Если просто сделав fetch, ты сделаешь git push, то гит скажет: эй бро э, у тебя есть ветка master, которая связана с удаленной веткой origin/master, но ваши путм разъехались, иди нафиг