git pull: keeps telling me to stash local changes before pulling

36.3k Views Asked by At

When I am trying to pull my git repository with "git pull", it keeps telling me that I have local changes although I have not touched any of the mentioned files. Can someone explain this behavior and knows a solution?

git status:

    # On branch master
# Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
#   (use "git pull" to update your local branch)
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   src/component/Provider.java
#   modified:   src/data/Cascading.java
#
no changes added to commit (use "git add" and/or "git commit -a")

Solved the problem. It was actually my fault not noticing that the remote repository has been reset to a previous version. Nevertheless if you experience this, the solution explained by Max Woolf will work!

3

There are 3 best solutions below

1
On BEST ANSWER

It sounds like your local branch does not have all of the changes on origin.

Firstly, stash your changes

git stash

Then, pull in the changes from origin.

git fetch origin && git rebase origin/(branch name)

Next, add the stash back in to your working directory:

git stash pop
0
On

Git simply can't pull the changes if the files you have edited locally were changed on the remote. Basically, you have two choices:

  • stage and commit your changes, then Git will try to merge it during the pull (or ask for your help);
  • stash the changes, which puts them aside so you could pull the remote code and then re-apply your modifications.
0
On

add all the files (adds all the files you changed)

git add .

then stash your changes

git stash

then you should be able to

git checkout branch && git pull

you have probably touched those files and you can go to the files and check with lines that have been touched. I usually use vscode for this. You can also just restore those files by git restore.