Important: If you have any local changes, they will be lost. With or without
--hard option, any local commits that haven’t been pushed will be lost.
If you have any files that are not tracked by Git (e.g. uploaded user content), these files will not be affected.
I think this is the right way:
git fetch --all
Then, you have two options:
git reset --hard origin/master
OR If you are on some other branch:
git reset --hard origin/<branch_name>
git fetch downloads the latest from remote without trying to merge or rebase anything.
git reset resets the master branch to what you just fetched. The
--hard option changes all the files in your working tree to match the files in
[*]: It’s worth noting that it is possible to maintain current local commits by creating a branch from
master before resetting:
git checkout master git branch new-branch-to-save-current-commits git fetch --all git reset --hard origin/master
After this, all of the old commits will be kept in
new-branch-to-save-current-commits. Uncommitted changes however (even staged), will be lost. Make sure to stash and commit anything you need.
2nd way use
git clean deletes all your untracked files/directories and can’t be undone.
clean -f does not help. In case you have untracked DIRECTORIES, -d option also needed:
git reset --hard HEAD git clean -f -d git pull