How do I force an overwrite of local files on a
The scenario is the following:
- A team member is modifying the templates for a website we are working on
- They are adding some images to the images directory (but forgets to add them under source control)
- They are sending the images by mail, later, to me
- I'm adding the images under the source control and pushing them to GitHub together with other changes
- They cannot pull updates from GitHub because Git doesn't want to overwrite their files.
This is the error I'm getting:
error: Untracked working tree file 'public/images/icon.gif' would be overwritten by merge
How do I force Git to overwrite them? The person is a designer - usually, I resolve all the conflicts by hand, so the server has the most recent version that they just need to update on their computer.
⚠ 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.
First, run a fetch to update all
origin/<branch> refs to latest:
git fetch --all
Backup your current branch:
git branch backup-master
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
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
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