What is the meaning of git reset --hard origin/master?
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?
Solution 1:
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".
Solution 2:
In newer version of git (2.23+) you can use:
git switch -C master origin/master
-C
is same as --force-create
. Related Reference Docs