警告:远程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-nameHEAD符号引用仍然包含指向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(仅限纯文本消息)