https://saraford.net/2017/03/28/how-to-recover-from-the-oh-no-i-did-a-git-reset-and-now-my-files-are-gone-087/
GIT FETCH - downloads commits, files, and refs(contents) from a remote repository into your local repo. Fetching is what you do when you want to see what everybody else has been working on. ... but it doesn't force you to actually merge the changes into your repo. Git isolates fetched content as a from existing local content, it has absolutely no effect on your local development work.Fetched content has to be explicitly checked out using the git checkout command. ...it does not update your local repo's working state, leaving your current dwor intact GIT PULL - git pull is more aggressive alternative, it will download the remote content for the active local branch and immediately execute git merge to create a merge commit for the new remote content. GIT MERGE - git merge is used to combine two branches. ...Once git finds a common base commit it will create a new "merge commit" that combines the changes of each queued merge commit sequence. -preparing to merge