git无法结帐空的主分支

Web*_*ner 0 git

git checkout master 游戏我如下: error: pathspec 'master' did not match any file(s) known to git.

以下是我从 repo 创建开始所采取的步骤:

Daniel@DOVE ~/Desktop/repos/mine                                                              
$ mkdir git-test                                                                              

Daniel@DOVE ~/Desktop/repos/mine                                                              
$ cd git-test                                                                                 

Daniel@DOVE ~/Desktop/repos/mine/git-test                                                     
$ git init                                                                                    
Initialized empty Git repository in c:/Users/Daniel/Desktop/repos/mine/git-test/.git/         

Daniel@DOVE ~/Desktop/repos/mine/git-test (master)                                            
$ git checkout -b feat-a                                                                      
Switched to a new branch 'feat-a'                                                             

Daniel@DOVE ~/Desktop/repos/mine/git-test (feat-a)                                            
$ git checkout master                                                                         
error: pathspec 'master' did not match any file(s) known to git.                              
Run Code Online (Sandbox Code Playgroud)

为什么会出错?

tor*_*rek 6

发生错误是因为没有名为 的分支master,因此git checkout尝试将其重新解释为路径名,并且也没有命名的文件master

你可能想知道分支master去了哪里,因为git init它创建了它。这个问题的答案是,git init并没有真正创建它,至少,不完全是。什么git init与它的作用是一样的你的git checkout -b feat-a用做feat-a:将其设置为“未出生的分支”,让你在不实际存在的一个分支。

它是第一个git commit创建否则未出生的分支。 你是对feat-a的时候,你所做的第一git commit,所以master,它从来没有真正被创建,停止甚至可能存在于这一点。 (哎呀,你还没有进行第一次提交,我不知何故凭空变出了一个。所以feat-a也是未出生的,现在仍然是。让我们假设,对于剩下的答案,你确实做了一个git commit来创建第一个犯罪。)

您仍然可以git checkout -b master,这将创建它指向当前提交,或者git checkout --orphan master,它将“一半创建”它作为未出生的,等待第一次提交。它们之间的区别在于没有--orphan,因为现在有一个现有的提交,git 可以并且将在当前提交时完全创建分支。使用--orphan,或者在空存储库的特殊情况下,git 不会或不能创建指向现有提交的新分支名称。