How to Force Overwrite Local Files on Git Pull
Using Git pull, we download the latest changes from Git remote repository to local repository code. During this process, we faced issues many times due to local changes. Then we need to force overwrite any local changes and update all files from the remote repository.
Git fetch command downloads the latest updates from remote, but don’t merge or rebase in local files.
Git reset resets the master branch to what you just fetched. The –hard option changes all the files in your working tree, same as on origin/master
All the local changes will be lost.
Any local commits that haven’t been pushed will be lost.
Any files that Git does not track will not be affected.
Commands to Overwrite Local Files
Use the following command to force overwrite local files from the remote repository. We are assuming you are downloading changes from the remote master branch.
$ git fetch --all
$ git reset --hard origin/master
To download changes from some other branch use the following command.
$ git reset --hard origin/other_branch
$ git pull origin master
How it works:
Downloads the latest from remote without trying to merge or rebase anything. Then the 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 origin/master.
Maintain current local commits
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. For that, you can run the following:
And then to reapply these uncommitted changes:
git stash pop