How do I force an overwrite of local files on a git pull
? My local repository contains a file of the same filename as on the server.
error: Untracked working tree file 'example.txt' would be overwritten by merge
⚠ Warning:
Any uncommitted local change to tracked files will be lost, even if staged.
But any local file that's not tracked by Git will not be affected.
First, update all origin/<branch>
refs to latest:
git fetch --all
Backup your current branch (e.g. main
):
git branch backup-main
Jump to the latest commit on origin/main
and checkout those files:
git reset --hard origin/main
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 origin/main
.
[*]: It's worth noting that it is possible to maintain current local commits by creating a branch from main
before resetting:
git checkout main
git branch new-branch-to-save-current-commits
git fetch --all
git reset --hard origin/main
After this, all of the old commits will be kept in new-branch-to-save-current-commits
.
Uncommitted changes, even if staged (with git add
), will be lost. Make sure to stash
or commit anything you need. For example, run the following:
git stash
And later (after git reset
), reapply these uncommitted changes:
git stash pop
Which may create merge conflicts.