为什么分支名称不能以“#”字符开头?

12
这个。
git checkout -b #1-my-awesome-feature

引发错误

error: switch `b' requires a value

在其前面加上反斜杠或将其用引号包裹起来都可以使它转义

git checkout -b \#1-my-awesome-feature

但很奇怪,这个

git branch #1-my-awesome-feature

不会产生任何错误,如果您检查它是否已被创建,则 不会 产生任何错误。


git branch --all

没有分支。

如果哈希字符不在分支名称的第一个位置,则会创建分支。

git branch feature-#1

执行 git branch

feature-#1
* master

我的问题是在终端中#字符是如何被“翻译”的,并且为什么当它放在第一位时它不能正常工作?

谢谢!


平台很重要。这很可能在Windows上运行。 - Thorbjørn Ravn Andersen
1个回答

27

# 表示注释开始(至少在Linux shell中)。 因此

git checkout -b #1-my-awesome-feature

成为:

git checkout -b

并且报错指出 b 选项需要一个值。

正如在这里所示,你可以通过用\转义#或者将名称放在单引号/双引号中来解决这个问题:

git checkout -b \#1-my-awesome-feature
git checkout -b "#1-my-awesome-feature"
git checkout -b '#1-my-awesome-feature'

1
还有一点需要注意,#是一个有效的分支名称,只需要加引号或转义即可。git branch '#'git checkout -b '#'都可以正常工作,尽管出于上面答案中列出的原因,以这种方式命名分支当然是不切实际的。 - jsageryd

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