我已经在这方面找到了一个可靠的答案,并且没有找到任何相关的东西。我们正在使用远程git存储库,我们正在将非master的分支推送到远程仓库。例如:
git checkout -b new_branch
git add --all .
git commit -m "changes"
git push remote new_branch
但是,当我们尝试从那个裸的远程存储库进行克隆时,我们会收到错误:
git clone /path/to/repo.git
warning: remote HEAD refers to nonexistent ref, unable to checkout.
我不确定为什么HEAD被分离并且没有指向new_branch上的最后一次提交?我们如何克隆这个远程存储库?
答案 0 :(得分:1)
warning: remote HEAD refers to nonexistent ref, unable to checkout.
表示远程(裸)存储库在文件HEAD
中包含与同一存储库中任何已发布分支不匹配的分支引用。
请注意,警告只表示git没有办理结帐。克隆的存储库也不错。只需git branch -a
查看可能的分支,git checkout the-branch-you-want
即可解决问题。
这通常是因为该文件的默认内容为ref: refs/heads/master
,表示如果有人要clone
此存储库,则默认情况下应克隆分支refs/heads/master
。默认情况下,Git将创建没有refs/heads/
前缀的本地分支(默认情况下为master
)。请尝试git help symbolic-ref
了解详情。
这种情况的问题是Git没有提供修改远程符号引用的方法,所以你要么使用Git托管提供商实现的东西(例如,如果你有GitHub中的设置 - 默认分支)管理员权限)或者您必须使用分支名称master
作为默认分支(因为它是该符号引用的默认值)。
解决此问题的一种方法是创建一个没有提交的新远程裸存储库,然后执行git push name-of-the-remote my-special-branch-name
,这将导致包含单个分支my-special-branch-name
的裸存储库,但HEAD
symbolic ref仍包含指向master
的默认值。因此,您将收到上述警告。
请参阅:this post
答案 1 :(得分:-2)
可以使用以下任一命令克隆远程仓库
git clone https://github.com/username/repo.git
git clone git@github.com:username/repo.git
让我知道你试图帮助你的确切命令。