Reputation: 21698
Since a few days ago, every time I press tab key to complete branch names in bash I see the message:
warning: ignoring broken ref refs/remotes/origin/HEAD warning: ignoring broken ref refs/remotes/origin/HEAD
For example, this is what I see when I have a branch called feature/foo and I press tab:
git checkout f
$ git checkout fwarning: ignoring broken ref refs/remotes/origin/HEAD
warning: ignoring broken ref refs/remotes/origin/HEAD
eature/
Upvotes: 174
Views: 85719
Reputation: 412
To fix this error, remove the following file YOURPROJECT/.git/refs/remotes/origin/master, and then run git fetch to download it again. It will solve your problem.
Upvotes: 4
Reputation: 363
My solution was to delete the folder/file:
./.git/refs/remotes/origin/{branch_name}
Afterwards I was finally able to make a git fetch again.
Upvotes: 13
Reputation: 3966
Like already answered - The warning indicates that the remote branch no longer exists, e.g. when the remote branch is merged+deleted into another branch.
In my case I had to delete my local branch, because it was not longer needed and fixing the broken ref was not possible. Therefore, git branch -d feature/..
did the job.
Upvotes: 0
Reputation: 5171
Just run the command -
#replace the <branch name> with your main branch - master, main, etc.
git remote set-head origin <branch name>
Enjoy!
Upvotes: 24
Reputation: 2388
Some problems arise after the local master renames main:
git fetch
: "fatal: couldn't find remote ref refs/heads/master";git branch -u origin/main main
: "error: the requested upstream branch 'origin/main' does not exist";git remote set-head origin main
: "error: Not a valid ref: refs/remotes/origin/main";git push -u origin main
: "error: failed to push some refs to 'github.com:/.git'";git symbolic-ref HEAD refs/heads/main
or git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
or git update-ref refs/heads/main main
,
git branch -r
: "warning: ignoring broken ref refs/remotes/origin/HEAD";The solution to this problem:
git remote -v
, copy git repository urlgit remote rm origin
, remove remotegit remote add origin <REPOSITORY_URL>
, reset remote urlgit fetch origin
git branch -u origin/main main
, reset branch upstreamUpvotes: 7
Reputation: 41
In my case the problem was the file .git\refs\remotes\origin\master
that got corrupted, maybe since my computer was involuntary disconnected from power a few days ago.
I solved it by replacing the file content with the correct reference, a 40 char hex number that can be found in the file .git\FETCH_HEAD
.
Upvotes: 2
Reputation: 14969
This is a simpler solution than symbolic-ref.
Since you may have excluded the branch that origin/HEAD was initially pointed to.
1. List your remote branches with:
git branch -r
2. If it doesn't show in the results:
origin/HEAD -> origin/(something)
3. Just point it again with:
git remote set-head origin master
where "master" is the name of your primary (head) branch.
Running git branch -r
again now shows origin/HEAD -> origin/(something)
and the warning goes away.
Upvotes: 162
Reputation: 2749
I encountered this recently when someone on my team deleted our old development branch from the remote. I ran this command to check the status of HEAD:
$ git symbolic-ref refs/remotes/origin/HEAD
refs/remotes/origin/old_dev
This command output the name of the old development branch, which no longer exists.
I fixed the warnings using this:
$ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/new_dev
(Where "new_dev" is a branch name. Replace it with the name of the branch you want HEAD to point to.)
Upvotes: 256
Reputation: 11625
Looks like the default branch of your remote origin
doesn't exists anymore.
Fix the default branch of the remote:
Upvotes: 1