git checkout master 错误:路径规范“master”与git已知文件不匹配。

8
所以我创建了一个新的Rails应用程序 rails new myapp,然后执行cd myapp,再执行git init,最后执行git checkout -b experimental - 这创建了一个新分支,但是当我尝试切换回主分支时,它没有起作用,并出现了标题中的错误。同时执行git branch命令时,什么都没有显示,所以我检查了一下branches文件夹,发现它是空的,这是我预期的结果。
1个回答

10

只有在进行第一次提交后才会创建您的第一个分支。如果您只是运行git init并立即切换到新分支,则不会创建master分支。例如:

% git init .
% git branch

显示您没有任何分支。如果要切换分支,将更改将在创建第一个提交时提交(因此创建)的分支。然而,您仍然可以看到这不会显示为存在的分支:

% git checkout -b experimental
% git branch

仍然没有显示任何分支。但是,当您创建第一个提交时:

% echo hello > newfile.txt
% git add newfile.txt
% git commit -mexperimental
[experimental (root-commit) dab457a] experimental
 1 file changed, 1 insertion(+)
 create mode 100644 newfile.txt

现在存在experimental分支,但不存在master分支,因为您没有提交到它:

% git branch
* experimental
你收到的错误信息很晦涩,因为你可以使用git checkout命令切换到不同的分支或将文件写入工作目录。 当你执行以下命令时:
% git checkout master

这首先被解释为“切换到master分支”。然而,如果没有master分支,它会被进一步解释为“将文件master检出到工作目录中”。由于你也没有那个文件(或者说一个路径规范master,因此它告诉你找不到此文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接