What I believe is the most confusing thing for git beginners is that the main commands have multiple uses depending on the arguments or context, and some of those uses aren't well-described by the command's name.
- merges together different branches (different histories, to be more exact)
- fast-forwards if a merge isn't necessary; effectively repositioning the branch head to a descendant commit
- unwanted outcome of
git pull