Skip to content
Fix Code Error

How do I force “git pull” to overwrite local files?

March 13, 2021 by Code Error
Posted By: Anonymous

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

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.

Solution

⚠ 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 checkout -b 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>

Explanation:

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


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

Uncommitted changes, however (even staged), will be lost. Make sure to stash and commit anything you need. For that you can run the following:

git stash

And then to reapply these uncommitted changes:

git stash pop
Answered By: Anonymous

Related Articles

  • Various ways to remove local Git changes
  • Unable to send email using Gmail SMTP server through…
  • How to track untracked content?
  • git pull while not in a git directory
  • VueJS Master Checkbox Toggle with array values
  • Ubuntu apt-get unable to fetch packages
  • Checkout another branch when there are uncommitted changes…
  • Git Using Remote Branch
  • Why do I have to "git push --set-upstream origin "?
  • Git - Pushing code to two remotes

Disclaimer: This content is shared under creative common license cc-by-sa 3.0. It is generated from StackExchange Website Network.

Post navigation

Previous Post:

How do I check if a string contains a specific word?

Next Post:

How do I declare and initialize an array in Java?

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

  • Get code errors & solutions at akashmittal.com
© 2022 Fix Code Error