Git Push除了Master之外的分支

时间:2015-05-11 17:47:22

标签: git git-branch

我已经在这方面找到了一个可靠的答案,并且没有找到任何相关的东西。我们正在使用远程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上的最后一次提交?我们如何克隆这个远程存储库?

2 个答案:

答案 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

让我知道你试图帮助你的确切命令。