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)
为什么会出错?
发生错误是因为没有名为 的分支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 不会或不能创建指向现有提交的新分支名称。