I am trying to understand when to use get fetch instead of git pull. I have read before (such as here and here) that the difference between git pull and get fetch is that pull does a fetch followed by a merge. That is all well and good except…wait - what does fetch actually do if it does not merge? What does it even mean to fetch updates from the remote repository if you do not merge into the local repository?
For example, say my local repository is three commits behind and one commit ahead of the remote repository. If I do a git pull, I will see those three commits in my local repository, with the possibility of “<<<<<<< HEAD” in some files if there is a merge conflict. The git log would would have an extra commit for the pull.
If I do a fetch, would not those three commits show up in my local repository? If they do, how is it effectively different than the pull? Does it handle conflicts differently than the pull or is there some other difference?