对于不同的原因,这似乎是一个流行的错误.
我有一个名为"kiflea.git"的简单裸git repo,我这样克隆它:
git clone git://kipdola.be/kiflea.git
Run Code Online (Sandbox Code Playgroud)
然后git告诉我: warning: remote HEAD refers to nonexistent ref, unable to checkout.
是的,除了.git目录外,地图中没有版本化文件.无论如何,我唯一需要做的是:
cd kiflea
git checkout master
Run Code Online (Sandbox Code Playgroud)
它工作,所有文件都在那里.但我认为克隆一个repo会自动检出主人,所以究竟发生了什么,我该如何修复呢?
我注意到,在我这么做之后git checkout master,这会被添加到我的本地.git配置文件中:
[branch "master"]
remote = origin
merge = refs/heads/master
Run Code Online (Sandbox Code Playgroud)
知道这个git存储库曾经是一个遥远过去的svn存储库,这可能很有趣.
Ps:当使用gitweb浏览裸存储库时,那里显然有一个master分支:http://kipdola.be/gitweb/?p = kiflea.git; a = summary
Mik*_*nen 104
这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将创建没有refs/heads/前缀的本地分支(master默认情况下).尝试git help symbolic-ref获取更多信息.
这种情况的问题是Git没有提供修改远程符号引用的方法,所以你要么使用Git托管提供商实现的东西(例如,如果你有管理员权限,设置 - GitHub中的默认分支),或者你必须使用分支名称master作为默认分支(因为这是该符号引用的默认值).
如果您具有对远程git仓库的shell访问权限,则可以cd path/to/bare/git/repo; git symbolic-ref HEAD refs/heads/XYZ在XYZ默认情况下简单地使用分支名称.
解决此问题的一种方法是创建一个没有提交的新远程裸git push name-of-the-remote my-special-branch-name存储库,然后这将导致包含单个分支的裸存储库,my-special-branch-name但HEAD符号引用仍然包含指向的默认值master.结果,您将收到上述警告.
Muh*_*zad 14
这是迟到的答案(2021),但会帮助其他人。
快速修复运行此 git 命令git symbolic-ref HEAD refs/heads/main
谢谢@alexey-vazhnov
当您使用文件中git init --bare设置的内容创建裸存储库时,但是当您克隆此裸存储库时,其默认分支是,这就是问题所在,因此您需要更改文件并放置Masater` ieref: refs/heads/masterHEADmainHEADmain' instead of
ref: refs/heads/main
小智 9
我有同样的问题,因为我不再使用master分支,它在我的本地和远程存储库中都丢失了.
远程存储库仍然HEAD设置为master,我已将其更改为我实际使用的远程分支之一,一切正常.
如果您可以访问远程存储库:
remote_repo.git;HEAD文件ref: refs/heads/master到ref: refs/heads/your_branch对于 Gitlab,即使它显示您位于默认分支(例如master),您实际上可能并不在其中,请再次设置它来修复它,如下所示:
asdmasterasdmasterasd分支完成,现在您的默认分支是master
是的,这与你的git clone试图检查不同于master的分支有关.就这样做吧
git clone user@git-server:project_name.git -b branch_name /some/folder
Run Code Online (Sandbox Code Playgroud)
这将帮助您通过其分支名称克隆确切的分支.
| 归档时间: |
|
| 查看次数: |
74152 次 |
| 最近记录: |