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

23,963

Solution 1

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

Solution 2

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.

Solution 3

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.
Share:
23,963
Jasper
Author by

Jasper

Updated on October 09, 2021

Comments

  • Jasper
    Jasper over 2 years

    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!

  • Martijn Vissers
    Martijn Vissers almost 2 years
    It looks like you could also achieve the same by calling git fetch origin --autostash which stashes and pops for you. Source: git-scm.com/docs/git-pull/2.17.0#Documentation/…