What is the difference between git pull and git reset --hard origin/<branch>?
$ git pull
# takes the latest changes of origin/branch (exists both local & remote changes)
$ git reset --hard origin/branch
# replace your local with origin's branch history (discard local changes)
Example: Say, we have two commits in local A
, B
and remote has two commits A
, C
. Now if you pull then your local contains A
, B
, C
unlike if reset then your local will have A
, C
not B
.
The following commands:
git fetch
git reset --hard origin/<branch>
will discard all local changes.
Where as:
git pull
Which is exactly the same as:
git fetch
git merge origin/<branch>
will attempt to preserve local changes.