警告:忽略损坏的ref refs/remotes/origin/HEAD

sen*_*rio 46 git bash

从几天前开始,每次tab按键在bash中完成分支名称时,我都会看到以下消息:

警告:忽略破碎的ref refs/remotes/origin/HEAD警告:忽略破碎的ref refs/remotes/origin/HEAD

例如,当我有一个名为feature/foo的分支时,我就会看到这一点,然后按tab:

git checkout f

$ git checkout fwarning: ignoring broken ref refs/remotes/origin/HEAD
warning: ignoring broken ref refs/remotes/origin/HEAD
eature/
Run Code Online (Sandbox Code Playgroud)

小智 57

最近我遇到了这个问题,当时我的团队中有人从遥控器上删除了旧的开发分支.我运行此命令来检查HEAD的状态:

$ git symbolic-ref refs/remotes/origin/HEAD
refs/remotes/origin/old_dev
Run Code Online (Sandbox Code Playgroud)

此命令输出旧的开发分支的名称,该分支不再存在.

我用这个修复了警告:

$ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/new_dev
Run Code Online (Sandbox Code Playgroud)

(其中"new_dev"是分支名称.将其替换为您希望HEAD指向的分支的名称.)

  • 我认为现在很多人都会发现这一点,因为有从 master 切换到 main 的趋势​​。谢谢! (3认同)
  • 谢谢!当我删除存储库中的“master”分支时,我遇到了同样的问题。 (2认同)

Pau*_*ica 41

这是一个比symbolic-ref更简单的解决方案.


由于您可能已排除origin/HEAD最初指向的分支.

1.列出您的远程分支:

git branch -r
Run Code Online (Sandbox Code Playgroud)

2.如果结果中没有显示:

origin/HEAD -> origin/(something)
Run Code Online (Sandbox Code Playgroud)

3.再次指出:

git remote set-head origin master
Run Code Online (Sandbox Code Playgroud)

其中"master"是主(头)分支的名称.


git branch -r现在再次运行显示origin/HEAD -> origin/(something)并且警告消失.

  • 这个答案对我来说是最容易理解和消化的方法,并且很有魅力。谢谢。 (3认同)

sim*_*bor 15

只需运行命令 -

#replace the <branch name> with your main branch - master, main, etc.    
git remote set-head origin <branch name>
Run Code Online (Sandbox Code Playgroud)

享受!

  • 请记住,您的 HEAD 可能不被称为“master”。您必须使用最重要的分支。例如“master”、“main”、“rc”,无论您希望开发人员位于哪个分支。 (4认同)

chr*_*mar 9

我的解决方案是删除文件夹/文件:

./.git/refs/remotes/origin/{branch_name}

后来我终于能够再次进行 git fetch 了。


山茶树*_*葡萄树 7

本地master重命名main后出现一些问题:

  • git fetch:“致命:找不到远程引用 refs/heads/master”;
  • git branch -u origin/main main: "错误: 请求的上游分支'origin/main'不存在";
  • git remote set-head origin main:“错误:不是有效的参考:refs/remotes/origin/main”;
  • git push -u origin main:“错误:无法将一些引用推送到'github.com:/.git'”;
  • git symbolic-ref HEAD refs/heads/maingit symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/maingit update-ref refs/heads/main main,
    • 然后git branch -r:“警告:忽略损坏的参考 refs/remotes/origin/HEAD”;

这个问题的解决办法:

  1. git remote -v,复制git仓库url
  2. git remote rm origin, 删除遥控器
  3. git remote add origin <REPOSITORY_URL>,重置远程url
  4. git fetch origin
  5. git branch -u origin/main main, 重置上游分支