为什么我的'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 "..."