几天前,每次按 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/
答案 0 :(得分:47)
我最近在团队中有人从遥控器上删除了旧的开发分支时遇到了这个问题。我运行此命令来检查HEAD的状态:
$ git symbolic-ref refs/remotes/origin/HEAD
refs/remotes/origin/old_dev
此命令输出旧的开发分支的名称,该分支不再存在。
我使用以下方法修正了警告:
$ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/new_dev
(其中“new_dev”是分支名称。将其替换为您希望HEAD指向的分支的名称。)
答案 1 :(得分:29)
这是一个比symbolic-ref更简单的解决方案。
由于您可能已排除最初指向 origin / HEAD 的分支。
<强> 1。列出您的远程分支机构:
git branch -r
<强> 2。如果它没有显示在结果中:
origin/HEAD -> origin/(something)
第3。只需再次指出:
git remote set-head origin master
其中&#34;掌握&#34;是您的主要(头)分支的名称。
现在再次运行git branch -r
会显示origin/HEAD -> origin/(something)
并且警告会消失。
答案 2 :(得分:2)
在我的情况下,问题是文件INSERT ... SELECT
损坏了,也许是因为几天前我的计算机非自愿断开了电源。
我通过用正确的引用替换文件内容来解决它,该引用是文件.git\refs\remotes\origin\master
中可以找到的40个字符的十六进制数字。
答案 3 :(得分:1)
看起来远程origin
的默认分支不再存在。
修复遥控器的默认分支:
答案 4 :(得分:1)
只需运行命令-
git remote set-head origin master
享受!
答案 5 :(得分:1)
本地master重命名main后出现一些问题:
git fetch
: "fatal: 找不到远程引用 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/main
或 git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
或 git update-ref refs/heads/main main
,
git branch -r
:“警告:忽略损坏的参考文献/remotes/origin/HEAD”;这个问题的解决方法:
git remote -v
, 复制git仓库地址git remote rm origin
,移除遥控器git remote add origin <REPOSITORY_URL>
,重置远程网址git fetch origin
git branch -u origin/main main
,重置上游分支