Answers:
大多数Git仓库都用master作主(和默认)分支-如果通过初始化一个新的Git仓库git init,则master默认情况下它将签出。
但是,如果克隆存储库,则拥有的默认分支就是遥控器HEAD指向的对象(HEAD实际上是指向分支名称的符号引用)。因此,如果您克隆的存储库有一个HEAD指向的指针,例如foo,那么您的克隆将只有一个foo分支。
从中克隆的远程服务器可能仍然具有master分支(可以使用进行检查git ls-remote origin master),但是默认情况下您不会创建该分支的本地版本,因为git clone仅签出了该远程服务器的HEAD。
git add ., git commit -m "Test",然后git push -u origin master。
git ls-remote origin master没有显示任何内容。
要签出本地不存在但在远程仓库中的分支,可以使用以下命令:
git checkout -t -b master origin/master
fatal: Cannot update paths and switch to branch 'master' at the same time.
master 仅仅是分支的名称,除了在默认情况下是在创建新存储库时创建的,它没有任何魔术。
您可以使用添加回去git checkout -b master。
git checkout -b master只是为我在当前分支上添加了一个新分支。
git checkout -b master创建一个master分支HEAD-因此,如果您在另一个分支上,它将master从该分支创建一个分支。除非您已经有一个master分支(除非,例如,您已经删除了它或从未提交过它),否则您将拥有它。如果您已经有一个master分支,此命令只会给您一个错误。
master只是一个分支,可以使用删除git branch -d master。尽管git可以防止您删除当前所在的分支,但没有什么特别的保护master分支。更具体地说,很难说您是如何做到的。也许您使用shell的history命令来看看?
git checkout -b master仅在HEAD设置为原点/原点时才有效。在任何其他情况下(例如,您在“开发”中),git checkout -b master将基于当前HEAD位置(例如,从“开发”中)创建一个名为“ master”的分支。您还需要说明哪个分支将成为新分支的野兽。@Bunyk在此线程上有正确答案:stackoverflow.com/a/21330943/287109
实际上,对于一个全新的存储库,我也遇到了同样的问题。我什至尝试使用创建一个git checkout -b master分支,但它不会创建分支。然后我意识到,如果我做了一些更改并提交了它们,git就创建了我的master分支。
在我的情况下,有一个开发分支,但没有主分支。因此,我克隆了将新创建的HEAD指向现有分支的存储库。然后,我创建了丢失的master分支,并更新HEAD以指向新的master分支。
git clone git:repositoryname --branch otherbranch
git checkout -b master
git update-ref HEAD master
git push --set-upstream origin master
看来必须在master分支上至少有一个本地提交才能执行:
git push -u origin master
因此,如果您这样做了git init .,然后git remote add origin ...您仍然需要执行以下操作:
git add ...
git commit -m "..."