为什么我的'git分支'没有主人?

我是一个GIT新手,我一直在阅读关于“主”分支。 “主人”只是人们使用的传统名字,还是像HEAD那样具有特殊意义?

当我在我拥有的克隆上做git branch时,我只看到1个单独的分支 – 我正在使用的分支。 根本没有“主人”。 如果我inputgit checkout master (正如我在很多教程或指南中看到的那样),我会得到

 error: pathspec 'master' did not match any file(s) known to git. 

我只是困惑,为什么我的克隆没有一个每个人似乎都暗示它总是存在的master

大多数Git仓库使用master作为主(和默认)分支 – 如果您通过git init初始化一个新的Git仓库,它会默认检出master仓库。

但是,如果你克隆一个版本库,你拥有的默认分支就是远程的HEAD指向的任何地方( HEAD实际上是一个指向分支名称的符号引用 )。 所以如果你克隆的仓库有一个HEAD指向foo ,那么你的克隆将只有一个foo分支。

你从克隆的远程可能仍然有一个master分支(你可以用git ls-remote origin master来检查),但是默认情况下你不会创build该分支的本地版本,因为git clone只检出远程的HEAD

要检出一个本地不存在但在远程仓库中的分支,你可以使用这个命令:

 git checkout -t -b master origin/master 

master只是一个分支的名字,除了创build一个新的仓库时默认创build的东西没有什么魔力。

你可以用git checkout -b master添加它。

我实际上有一个全新的存储库相同的问题。 我甚至尝试使用git checkout -b master创build一个,但是它不会创build分支。 然后我意识到,如果我做了一些改变,并承诺,git创build了我的主分支。

在我的情况下,有一个发展分支,但没有分支。 因此我克隆了将新创build的HEAD指向现有分支的仓库。 然后我创build了缺less的分支,并更新HEAD指向新的主分支。

 git clone git:repositoryname --branch otherbranch git checkout -b master git update-ref HEAD master git push --set-upstream origin master 

如果它是您已克隆的新回购,它可能仍是空的,在这种情况下:

git push -u origin master

应该把它整理一下。

(在我的情况下,不知道这是同一个问题,我认为我应该张贴这只是incase,可能会帮助别人。)

我遇到了同样的问题,并找出问题所在。 当你初始化一个仓库时,实际上没有任何分支。 当你开始一个项目运行git add . 然后git commit和主分支将被创build。

没有检查任何东西,你没有主分支。 在这种情况下,你需要按照其他人在这里build议的步骤。

似乎在主分支上至less必须有一个本地提交:

 git push -u origin master 

所以,如果你做了git init . 然后git remote add origin ... ,你仍然需要做:

 git add ... git commit -m "..."