Sourcetree/GIT - Cannot lock ref/reference broken, when pulling

Geoff_S picture Geoff_S · Nov 10, 2017 · Viewed 23.9k times · Source

A co-worker and I have been working on the same branch for a week, constantly pushing/pulling changes and all of a sudden today, I hit 'pull' to see if there were any changes I needed to pull and I got an error.

This is in sourcetree by the way. The error was this:

git -c diff.mnemonicprefix=false -c core.quotepath=false fetch origin
error: cannot lock ref 'refs/remotes/origin/angular_removal': unable to resolve reference 'refs/remotes/origin/angular_removal': reference broken
From https://bitbucket.org/colossus
 ! [new branch]        angular_removal -> origin/angular_removal  (unable to update local ref)

I'm in sourcetree, which has a terminal built in, but I can't seem to find a resolution here.

Answer

Dudar picture Dudar · Sep 17, 2018

The error text was slightly different for me like: unable to update local ref it is [hash_code_1] but expected [hash_code_2].

So the command like rm -rf .git/refs/remotes/origin/angular_removal helped me only to do fetch once. Then the message would return again.

What actually helped in this situation to fix the issue permanently was:

  1. go into .git subfolder of my local repository;
  2. open packed-refs file;
  3. find the line with branch name from error message;
  4. remove it from this file;
  5. now you can do fetch or pull all you like.