sensorario
sensorario

Reputation: 21698

warning: ignoring broken ref refs/remotes/origin/HEAD

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

Answers (9)

Yazdan Ilyas
Yazdan Ilyas

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

chrisaramar
chrisaramar

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

wake-0
wake-0

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

Simon Borsky
Simon Borsky

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,
    • and then git branch -r: "warning: ignoring broken ref refs/remotes/origin/HEAD";

The solution to this problem:

  1. git remote -v, copy git repository url
  2. git remote rm origin, remove remote
  3. git remote add origin <REPOSITORY_URL>, reset remote url
  4. git fetch origin
  5. git branch -u origin/main main, reset branch upstream

Upvotes: 7

cubitico
cubitico

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

Paulo Coghi
Paulo Coghi

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

kdechant
kdechant

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

zigarn
zigarn

Reputation: 11625

Looks like the default branch of your remote origin doesn't exists anymore.
Fix the default branch of the remote:

Upvotes: 1

Related Questions