What is the meaning of git reset --hard origin/master?

jimcgh picture jimcgh · Mar 15, 2013 · Viewed 334.4k times · Source

I did a git pull and got an error:

The following working tree files would be overwritten by merge... Please move or remove them before you can merge.

To resolve this I did the following:

git fetch
git reset --hard origin/master

Now when I do git pull, it says everything up to date. I want to know what exactly happens when I run these commands. I know git fetch fetches the changes from the remote repo without merging them into my local repo.

What is the meaning of git reset --hard origin/master? How does it work?

Answer

CB Bailey picture CB Bailey · Mar 15, 2013
git reset --hard origin/master

says: throw away all my staged and unstaged changes, forget everything on my current local branch and make it exactly the same as origin/master.

You probably wanted to ask this before you ran the command. The destructive nature is hinted at by using the same words as in "hard reset".