警告:远程HEAD是指不存在的裁判,无法结帐
对于不同的原因,这似乎是一个stream行的错误。
我有一个名为“kiflea.git”的简单的git仓库,我像这样克隆它:
git clone git://kipdola.be/kiflea.git
然后git告诉我: warning: remote HEAD refers to nonexistent ref, unable to checkout.
是的,除了.git目录之外,映射中没有版本化的文件。 无论如何,我唯一需要做的是:
cd kiflea git checkout master
它的工作,所有的文件都在那里。 但我认为克隆回购自动检查主,所以究竟是怎么回事,我该如何解决?
我已经注意到,在执行git checkout master
bit之后,它会被添加到我的本地.gitconfiguration文件中:
[branch "master"] remote = origin merge = refs/heads/master
知道这个git仓库曾经是一个遥远的过去的svn仓库可能是有趣的。
Ps:使用gitweb浏览裸仓库时,显然有一个master
分支: http ://kipdola.be/gitweb/?p=kiflea.git;a=summary
warning: remote HEAD refers to nonexistent ref, unable to checkout.
意味着远程(裸)存储库在文件HEAD
中包含分支引用,该引用与相同存储库中的任何已发布分支不匹配。
请注意,警告只意味着git没有结帐。 克隆的仓库就好了。 只要做git branch -a
查看可能的分支和git checkout the-branch-you-want
解决这个问题。
这通常是因为该文件的缺省内容( .git/HEAD
或裸仓库的普通HEAD
)是ref: refs/heads/master
,这说明如果有人要clone
这个存储库,他们应该默认克隆分支refs/heads/master
。 默认情况下,Git将创build不带refs/heads/
前缀的本地分支(即默认为master
)。 尝试使用git help symbolic-ref
来获取更多信息。
这种情况的问题是,Git没有提供修改远程符号引用的方法,所以你要么使用Git托pipe提供者已经实现的东西(例如,设置 – 如果你有pipe理员权限,设置 – GitHub中的默认分支),或者你必须使用分支名称master
作为默认分支(因为这是该符号ref的默认值)。
解决这个问题的一种方法是创build一个没有提交的新的远程裸回购,然后做git push name-of-the-remote my-special-branch-name
,这将导致裸仓库包含一个分支my-special-branch-name
但HEAD
符号引用仍然包含指向master
的默认值。 结果,你会得到上述警告。
我有同样的问题,因为我不再使用master
分支,它在我的本地和远程存储库中都丢失了。
远程仓库仍然有HEAD
设置master
,我已经改变了我实际使用的远程分支之一,一切工作正常。
如果您可以访问您的远程存储库:
- 去你的
remote_repo.git
; - 编辑
HEAD
文件 - 将
ref: refs/heads/master
更改为ref: refs/heads/your_branch
是的,这与您的git克隆试图检出一个不同于master的分支有关。 只要做到这一点
git clone user@git-server:project_name.git -b branch_name /some/folder
这将帮助您通过分支名称克隆确切的分支。
即使这个错误被显示 – 我的项目仍然连接到相应的存储库 – 我运行了“git分支”命令,看到了合适的分支 – 然后我运行了“git checkout * branchname”和BOOM – 一切正常。
远程存储库肯定有问题。 您可以通过创build存储库的新克隆来修复它。 也推动一个新的提交到主分支也可以工作。
我猜测这是在提交日志中的领先*
,以某种方式愚弄远程服务器。
我可以使用一些菜单链接浏览回购的Web界面,但其他的则失败, 404 - Unknown commit object
或类似的,尤其是摘要页面。
看看你是否可以修改最后一个提交消息,然后强制推送更新,看看是否修复它。 服务器恶魔中可能有一个错误。 如果确实如此,那么值得在git list git@vger.kernel.org(仅限纯文本消息)