I only have branch master and im getting this error every time i try to "git pull":
error: Couldn't set refs/remotes/origin/master
From /var/lib/git/xxx/project
! a0f80ea..49177a3 master -> origin/master (unable to update local ref)
and when i do "git pull origin master" i get:
error: Couldn't set ORIG_HEAD
fatal: Cannot update the ref 'ORIG_HEAD'.
i have been searching but cant find why
This question is related to
git
command-line-interface
This work for me
rm .git/logs/refs/remotes/origin/master
rm .git/refs/remotes/origin/master
It works to me!
Try to use this command in your git repository root folder:
rm .git/logs/refs/remotes/origin/master
Ensure the user that is executing the git pull
is the same user that created the repository. The file permissions are incorrect.
I had the same error, I was updating from within Eclipse and I got many errors. So I tried updating from a DOS command window, and got the same issue.
Then I tried the solution " git gc --prune=now " This gave messages that the files were locked in the refs directory.
Eclipse must have had a locked on something in the "refs" directory.
The solution I found was to simply close Eclipse.
Then I updated the repository from DOS with a " git PULL " command, and everything worked fine.
Speaking from a PC user - Reboot.
Honestly, it worked for me. I've solved two strange git issues I thought were corruptions this way.
What worked for me was:
git config --global fetch.prune true
Now it keeps on running prune automatically.
I fixed this by deleting the locked branch file. It may seem crude, and I have no idea why it worked, but it fixed my issue (i.e. the same error you are getting)
Deleted:
.git/refs/remotes/origin/[locked branch name]
Then I simply ran
git fetch
and the git file restored itself, fully repaired
I solved as below:
git remote prune origin
with gitbach line commande, use git update-ref
to update reference of your local branch:
$ git update-ref -d refs/remotes/origin/[locked branch name]
then pull using $ git pull
[locked branch name]
is the name of the branch that the error is happening because of mismatch of commit Ids.
This error with (unable to update local ref) can also happen if you have changed passwords recently and there's some fancy stuff integrating your Windows and Linux logins.
I had the same issue on my debian server as the disk is full. No temp file could be created as no space left on device. After cleaning some files, it worked out fine.
My team and I ran into this error, unable to update local ref, when doing a pull in SourceTree.
Update 2020: Per @Edward Yang's answer below, @bryan's comment on this answer, and this question/answer you may need to run both
git gc --prune=now
andgit remote prune origin
. Running only the former has always worked for me but based on ppl's responses I think both are necessary to address different causes of the error.
We used:
git gc --prune=now
This removes any duplicate reference objects which should fix the issue.
Here are a few links where you can learn more about git references and pruning :
This happened to me on OSX where I use a case insensitive file system. Somehow another developer pushed a branch with the same name but different case: My-Branch
vs my-branch
.
I already had My-Branch
checked out and got the error "unable to update local ref" when I did a pull probably because the file system thinks My-Branch
== my-branch
.
Since we use Github I could solve the problem by deleting one of the branches via Github's GUI.
I discoverd the same Error message trying to pull from a Bitbuck Repo into my lokal copy. There is also only one Branche Master and the command git pull origin master
lead to this Error Message
From https://bitbucket.org/xxx
* branch master -> FETCH_HEAD
error: Couldn't set ORIG_HEAD
fatal: Cannot update the ref 'ORIG_HEAD'.
Solution as follows
git reflog
find the number of the last commitgit reset --hard <numnber>
reset to the last commit git pull origin master
pull again without errorThis is probably a very niche situation, but: I run Windows in a Parallels VM on my MacBook Pro, with my local repos stored on the VM's disk, which is shared with macOS.
If I have a file open in a Mac app from a repo that's located on the Windows VM, I sometimes get the "unable to update local ref" error. The solution when this happens is to simply close the file or quit the Mac app.
Remove file .git/logs/refs/remotes/origin/[Locked Branch Name]
What happened over here?
The local references to your remote branches were changed and hence when you run git pull
, git doesn't find any corresponding remote branches and hence it fails.
git remote prune origin
actually cleans this local references and then run git pull
again.
Suggestion - Please run with --dry-run
option for safety
Clone the repository again, and copy the .git folder in your broken project.
Source: Stackoverflow.com