Reputation: 373
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!
Upvotes: 16
Views: 39323
Reputation: 847
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.
Upvotes: 5
Reputation: 4058
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
Upvotes: 33
Reputation: 9025
Git simply can't pull the changes if the files you have edited locally were changed on the remote. Basically, you have two choices:
Upvotes: 2