How do I ignore an error on 'git pull' about my local changes would be overwritten by merge?

GitGit PullGit Stash

Git Problem Overview


How do I ignore the following error message on Git pull?

> Your local changes to the following files would be overwritten by merge

What if I want to overwrite them?

I've tried things like git pull -f, but nothing works.

To be clear, I only want to overwrite specific changes, not everything.

Git Solutions


Solution 1 - Git

If you want remove all local changes - including files that are untracked by git - from your working copy, simply stash them:

git stash push --include-untracked

If you don't need them anymore, you now can drop that stash:

git stash drop

If you don't want to stash changes that you already staged - e.g. with git add - then add the option --keep-index. Note however, that this will still prevent merging if those staged changes collide with the ones from upstream.


If you want to overwrite only specific parts of your local changes, there are two possibilities:

  1. Commit everything you don't want to overwrite and use the method above for the rest.

  2. Use git checkout path/to/file/to/revert for the changes you wish to overwrite. Make sure that file is not staged via git reset HEAD path/to/file/to/revert.

Solution 2 - Git

Alright with the help of the other two answers I've come up with a direct solution:

git checkout HEAD^ file/to/overwrite
git pull

Solution 3 - Git

This works for me to override all local changes and does not require an identity:

git reset --hard
git pull

Solution 4 - Git

So many answers here that I hate to add yet another, but all of the above are clunkier than they need to be. I have to do this all the time as Git seems to become confused and says I have modified files that have not changed (can't revert because they didn't change, but I can't pull because they supposedly have changed) Simplest and fastest I've found so far is:

git stash
git stash drop
git pull

NOTICE: local changes will be lost

Solution 5 - Git

Here is a solution that throws away staged changes:

git reset file/to/overwrite
git checkout file/to/overwrite

Solution 6 - Git

You can either commit your changes before you do the merge, or you stash them:

  1. git stash save
  2. git merge origin/master
  3. git stash pop

Solution 7 - Git

If you want to discard your local changes on one file you can do the following:

git checkout -- <file>

Then you could overwrite the file[s] with the latest version just doing:

git pull

Solution 8 - Git

git pull --rebase --autostash

> -r, --rebase[=false|true|merges|preserve|interactive] > When true, rebase the current branch on top of the > upstream branch after fetching. If there is a > remote-tracking branch corresponding to the upstream

> --autostash, --no-autostash > Before starting rebase, stash local modifications away if > needed, and apply the stash entry when done


I do not know why this is not answered yet, but solution, as you can see is simple. All answers here suggest same: to delete/save your local changes and apply upstream, then (if you save) apply your local changes on top.

What git pull --rebase --autostash does step-by-step:

1. your local changes saved by `--autostash`
2. your local commits saved by `--rebase`
3. commits from upstream applied to your branch
4. your local commits are restored on top of upstream
5. your local changes are restored to working directory

My case (probably yours too):

I have local changes (changes at working directory):

enter image description here

When I try to pull remote changes I get error:

enter image description here

This changes do not intersect with local changes:

enter image description here

So when I pull --rebase --autostash local changes saved and applied without any problem automatically

enter image description here

Now my local changes are little lower: enter image description here

Solution 9 - Git

If your repository contains a few files which are removed from master:

  1. git checkout master
  2. git fetch origin
  3. git reset --hard origin/master
  4. git checkout -b newbranch

Solution 10 - Git

Sometimes, none of these work. Annoyingly, due to the LF thing I think, what will work is deleting the files, then pulling. Not that I recommend this solution, but if the file doesn't exist, git won't uselessly inform you that your changes (which may not even be changes) will get overridden, and will let you continue.

Use at your own risk.

Solution 11 - Git

git stash save --keep-index did not worked for me.

below command worked as expected.

git reset --hard
git pull

It override all local changes if you don't need them.

Solution 12 - Git

Try this

git fetch --all 

git reset --hard origin/master

git pull origin master

It's work for me to force pull

Solution 13 - Git

In the recent Git, you can add -r/--rebase on pull command to rebase your current branch on top of the upstream branch after fetching. The warning should disappear, but there is a risk that you'll get some conflicts which you'll need to solve.


Alternatively you can checkout different branch with force, then go back to master again, e.g.:

git checkout origin/master -f
git checkout master -f

Then pull it again as usual:

git pull origin master

Using this method can save you time from stashing (git stash) and potential permission issues, reseting files (git reset HEAD --hard), removing files (git clean -fd), etc. Also the above it's easier to remember.

Solution 14 - Git

Here is my strategy to solve the problem.

Problem Statement

We need to make changes in more than 10 files. We tried PULL (git pull origin master), but Git shouted:

> error: Your local changes to the following files would be overwritten > by merge: Please, commit your changes or stash them before you can > merge.

We tried to execute commit and then pull, but they didn't work either.

Solution

We were in the dirty stage actually, because the files were in the "Staging Area" a.k.a "Index Area" and some were in the "Head Area" a.k.a "local Git directory". And we wanted to pull the changes from the server.

Check this link for information about different stages of Git in a clear manner: GIT Stages

We followed the following steps

  • git stash (this made our working directory clean. Your changes are stored on the stack by Git).
  • git pull origin master (Pull the changes from the server)
  • git stash apply (Applied all the changes from stack)
  • git commit -m 'message' (Committed the changes)
  • git push origin master (Pushed the changes to the server)
  • git stash drop (Drop the stack)

Let's understand when and why you need stashing

If you are in the dirty state, means you are making changes in your files and then you are compelled, due to any reason, to pull or switch to another branch for some very urgent work, so at this point you can't pull or switch until you commit your change. The stash command is here as a helping hand.

From the book ProGIT, 2nd Edition:

> Often, when you’ve been working on part of your project, things are in > a messy state and you want to switch branches for a bit to work on > something else. The problem is, you don’t want to do a commit of > half-done work just so you can get back to this point later. The > answer to this issue is the git stash command. Stashing takes the > dirty state of your working directory – that is, your modified tracked > files and staged changes – and saves it on a stack of unfinished > changes that you can reapply at any time.

Solution 15 - Git

This problem is because you have made changes locally to file/s and the same file/s exists with changes in the Git repository, so before pull/push you will need stash local changes:

To overwrite local changes of a single file:

git reset file/to/overwrite
git checkout file/to/overwrite

To overwrite all the local changes (changes in all files):

git stash
git pull
git stash pop

Also this problem may be because of you are on a branch which is not merged with the master branch.

Solution 16 - Git

git reset --hard && git clean -df

Caution: This will reset and delete any untracked files.

Solution 17 - Git

This worked for me to discard changes on the live remote server and pull from the source control GitHub:

git reset --hard
git pull origin master

Solution 18 - Git

You can use this for overwrite file

git checkout file_to_overwrite

Solution 19 - Git

The best way to solve this problem is:

git checkout -- <path/file_name>

After that you can overwrite the file by:

git pull origin master

Solution 20 - Git

If you want to keep production changes on the server, just merge into a new configuration item. The processing method is as follows:

git stash
git pull
git stash pop

Maybe you don't execute all operations. You can know what you can do next.

Solution 21 - Git

If you want to overwrite specific changes, you need some way of telling it which ones you want to forget.

You could try selectively stashing the changes you want to abandon using git stash --patch and then dropping that stash with git stash drop. You can then pull in the remote changes and merge them as normal.

Solution 22 - Git

The simplest solution is:

git reset --hard && git pull

Solution 23 - Git

Error "Your local changes to the following files would be overwritten by merge" comes because you have some changes in the local repo that have NOT been commited yet, so before pulling from remote repo just commit the changes in local repo.

Lets say your remote repo has some branch xyz and you want that remote repo xyz branch to be merged into (copied to) local repo xyz branch then,

{
git checkout xyz                  //check out to the respective branch in local repo
git commit -m "commiting message" //commit changes if any, in local repo branch xyz
git pull                          //it pulls remote xyz branch into local xyz branch
}

Solution 24 - Git

I had a special case of this: I had a file with --assume-unchanged on it. It was hard to locate, as the git status command was not showing any changes

Solution 25 - Git

For me this worked:-

  1. First I cleaned all the untracked files, run-> git clean -f.
  2. git pull

Solution 26 - Git

Due to your branch is behind 'origin/dev' by xx commits, and can be fast-forwarded. Try this command:

git checkout .
git pullenter code here

Hope that fix your issue.

Solution 27 - Git

I was ignoring a file in my repo and when I did git pull upstream master I got the following error:

> error: Your local changes to the following files would be overwritten by merge: myfile.js Please, commit your changes or stash them before you can merge. Aborting

To resolve it I did the following

git update-index --no-assume-unchanged myfile.js

I then did git status and got this message

> On branch master Your branch is behind 'origin/master' by 4 commits, > and can be fast-forwarded. (use "git pull" to update your local > branch) > > Changes not staged for commit: (use "git add ..." to update > what will be committed) (use "git checkout -- ..." to discard > changes in working directory) > > modified: myfile.js > > no changes added to commit (use "git add" and/or "git commit -a")

Then I did git checkout myfile.js followed by git pull upstream master. This time the git pull operation was successful.

Solution 28 - Git

If this error is because of line endings,

git add
git checkout mybranch

will work. I'm not really sure why it works.

Solution 29 - Git

I encountered this when pulling from the master.

The way I handled it, using Visual Studio;

  1. First, I performed Undo commit on my solution.
  2. Then I did the Git pull process.

Hope this helps!

Solution 30 - Git

I have tried and it successfully, before pulling, let commit all file that you have not committed, then you will not receive that messages from AS.

Solution 31 - Git

I'm new in git and not sure if my solution is a good idea.

I've tested ALL of answers and none of them worked for me!

But I found another solution:

1. Backup both of local and repository versions of the file.
2. Delete the file from repository.
3. git add .
4. git commit
5. git push

Hope this helps.

Solution 32 - Git

My solution was delete the files from outside the IDE that are going to be overwritten, then pull.

(you can always backup and manually merge untracked data)

Solution 33 - Git

For Pycharm, you can do Git-->Revert and then pull.

Solution 34 - Git

This message can also happen if git-lfs is used and a file pointer was overwritten by a real file.

then you use:

git stash
git lfs migrate import
git pull

full output from my case

λ git stash
Saved working directory and index state WIP on master: 5d4ad47 Merge branch 'feature/...' into 'master'
Encountered 1 file(s) that should have been pointers, but weren't:
        public/apple-touch-icon.png

λ git pull
Updating 5a4ad44..b25f79d
error: Your local changes to the following files would be overwritten by merge:
        public/apple-touch-icon.png
Please commit your changes or stash them before you merge.
Aborting

λ git lfs migrate import
migrate: Fetching remote refs: ..., done
migrate: Sorting commits: ..., done
migrate: Rewriting commits: 100% (0/0), done
migrate: Updating refs: ..., done
migrate: checkout: ..., done


λ git pull
Updating 5d4ad47..a25c79a
Fast-forward
 public/apple-touch-icon.png | Bin 2092 -> 130 bytes
 public/favicon.ico          | Bin 6518 -> 1150 bytes
 2 files changed, 0 insertions(+), 0 deletions(-)

see https://github.com/git-lfs/git-lfs/issues/2839

Solution 35 - Git

I got the same error-message executed the
:PluginUpdate command from the vim editors command-line

> "Please commit your changes or stash them before you merge"

1. just physically removed the folder contained the plugins form the

rm -rf ~/.vim/bundle/plugin-folder/

2. and reinstalled it form the vim commandline,
:PluginInstall!
because my ~/.vimrc contained the instructions to build the plugin to that destination:

enter image description here

this created the proper folder,
and got new package into that folder ~./.vim/bundle/reinstalled-plugins-folder
The "!" signs (due to the unsuccessful PluginUpdate command) were changed
to "+" signs, and after that worked the PluginUpdate command to.

Solution 36 - Git

Check the file which you are okay to overwrite and lose local changes and then

git checkout --ours ${filePath}
git merge upstream/master

Solution 37 - Git

Example

[root@localhost www]# git pull
Username for 'http://159.65.151.11': amol
Password for 'http://[email protected]':
remote: Counting objects: 34, done.
remote: Compressing objects: 100% (34/34), done.
remote: Total 34 (delta 13), reused 0 (delta 0)
Unpacking objects: 100% (34/34), done.
From http://159.65.151.11/OpenCC
   f793c8e..b8fe60c  v1.18.0_24Feb2022 -> origin/_v1.18.0_24Feb2022
error: Your local changes to the following files would be overwritten by merge:
        cc/routes/web.php
Please, commit your changes or stash them before you can merge.
Aborting

Solution(ignore already commit change in local file)

git checkout HEAD^ cc/routes/web.php
git pull

Solution 38 - Git

Simply commit the local changes and merge commit -a

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionmaeView Question on Stackoverflow
Solution 1 - GitDaniel HilgarthView Answer on Stackoverflow
Solution 2 - GitmaeView Answer on Stackoverflow
Solution 3 - Gitkravits88View Answer on Stackoverflow
Solution 4 - GitBrian KnoblauchView Answer on Stackoverflow
Solution 5 - GitAftershockView Answer on Stackoverflow
Solution 6 - GitSuneel KumarView Answer on Stackoverflow
Solution 7 - GitpabloascView Answer on Stackoverflow
Solution 8 - GitEugen KonkovView Answer on Stackoverflow
Solution 9 - GitNikhil K RView Answer on Stackoverflow
Solution 10 - GitJeremy HolovacsView Answer on Stackoverflow
Solution 11 - GitKhemraj SharmaView Answer on Stackoverflow
Solution 12 - GitKasyful AnwarView Answer on Stackoverflow
Solution 13 - GitkenorbView Answer on Stackoverflow
Solution 14 - GitSTKView Answer on Stackoverflow
Solution 15 - GitBSBView Answer on Stackoverflow
Solution 16 - GitYamen AshrafView Answer on Stackoverflow
Solution 17 - GitGajen SuntharaView Answer on Stackoverflow
Solution 18 - GitDeepika PatelView Answer on Stackoverflow
Solution 19 - GitForhadul IslamView Answer on Stackoverflow
Solution 20 - GitYanQingView Answer on Stackoverflow
Solution 21 - GitWill VousdenView Answer on Stackoverflow
Solution 22 - GitJackkobecView Answer on Stackoverflow
Solution 23 - GitASRView Answer on Stackoverflow
Solution 24 - Gituser3458View Answer on Stackoverflow
Solution 25 - GitAmar KumarView Answer on Stackoverflow
Solution 26 - GitNikeConView Answer on Stackoverflow
Solution 27 - GitDmitryView Answer on Stackoverflow
Solution 28 - Gituser60561View Answer on Stackoverflow
Solution 29 - GitAJ MacapazView Answer on Stackoverflow
Solution 30 - GitTaQuangTuView Answer on Stackoverflow
Solution 31 - GitMilad SafaeiView Answer on Stackoverflow
Solution 32 - GitAli KleitView Answer on Stackoverflow
Solution 33 - GitMunichongView Answer on Stackoverflow
Solution 34 - Gitc33sView Answer on Stackoverflow
Solution 35 - GitstefanssonView Answer on Stackoverflow
Solution 36 - GitDivyesh KalbhorView Answer on Stackoverflow
Solution 37 - GitAmolView Answer on Stackoverflow
Solution 38 - GitUltraSibzView Answer on Stackoverflow