可能的git错误(`git checkout`失败)

可能的git错误(`git checkout`失败),git,Git,这是我能得到的最接近的一个例子。(当然,这个例子很奇怪,但这是本课程中最简单的例子。) 在一些合适的临时目录(例如/tmp)中运行以下脚本。脚本将创建一个目录demo`,并在其中初始化一个repo。然后,它将创建*两个完全不同的分支,没有任何共同之处。*这些分支由来自两个GitHub repo的内容填充 #!/bin/bash rm -rf demo mkdir demo cd demo git init git commit -m 'root commit' --allow-empty f

这是我能得到的最接近的一个例子。(当然,这个例子很奇怪,但这是本课程中最简单的例子。)

在一些合适的临时目录(例如
/tmp)中运行以下脚本。脚本将创建一个目录
demo`,并在其中初始化一个repo。然后,它将创建*两个完全不同的分支,没有任何共同之处。*这些分支由来自两个GitHub repo的内容填充

#!/bin/bash

rm -rf demo
mkdir demo
cd demo
git init
git commit -m 'root commit' --allow-empty

for URL in https://github.com/octocat/Spoon-Knife \
           https://github.com/octocat/hello-worId
do
    rm -rf content

    basename=$(basename $URL)
    branch_name=${basename%.git}
    git branch $branch_name
    git checkout $branch_name
    git clone $URL content
    rm -rf content/.git
    git add content
    git commit -m $branch_name
    git checkout master
done

git branch -a
git checkout Spoon-Knife
在这个脚本的末尾,当前分支是
Spoon-Knife
。如果现在发出命令
git checkout hello world
git
将失败并出现错误:

error: pathspec 'hello-world' did not match any file(s) known to git.

这是有效的行为吗?

您创建了分支
hello worLd
,但试图签出
hello worLd


不知道为什么你会这样命名你的回购协议,让你自己感到困惑…

这是两个独立的存储库,而不是分支。你想在这里干什么?有人在拉你的链子。octocat拥有“Hello World”和“Hello World”回购协议。用程序员的字体检查这些名称。这里用的那个就行了。希尔:谢谢,就这样。我完全错过了。(而且被否决了。)@ceejayouz:错了。问题是我忽略了GitHub选择使用大写字母“I”代替小写字母“l”的事实。相反(我创建的分支是
hello world
,但我尝试签出的分支是
hello world
),但我现在看到了问题。顺便说一句,我没有选择令人困惑的名字。GitHub做到了。为什么他们会在表面上设计用来教初学者git和GitHub的repos上这么做?这是个好问题。我就是这么说的。。。无论如何,在命令行中使用tab键可以自动完成长名称并避免拼写错误;)