Jakub Troszok Jakub Troszok - 2 months ago 79x
Git Question

How to force "git pull" to overwrite local files?

How do I force an overwrite of local files on a Git pull?

The scenario is 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.

The errors I'm getting are:

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 needs 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.

I think this is the right way:

git fetch --all
git reset --hard origin/master

OR If you are on some other branch

git reset --hard origin/your_branch


git fetch 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

[*]: 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.