如何检出一个包含特殊字符'-'的分支名称?

7
我创建了一个名为-new-br的git分支。
git checkout -b -new-br.

我切换回了父分支。

现在我无法checkout -new-br

git checkout -new-br.
getting error:
error: unknown switch `n'
usage: git checkout [options] <branch>
   or: git checkout [options] [<branch>] -- <file>...

我该如何检出这个分支?


2
你尝试过使用 git checkout -b \-new\-br 吗? - niyou
1
你确定你创建了那个分支吗?如果我尝试使用 git checkout -b -new-br 命令,会出现以下错误:fatal: '-new-br' 不是一个有效的分支名称。 请通过 git branch -a 命令检查该分支是否真的存在。 - Carlos Campderrós
3个回答

8
许多Unix命令接受--表示“不再有开关”,进一步的参数将不会被解析为开关。请参见“--”(双破折号)是什么意思?这个相邻的网站上
所以...
git checkout -- -new-br

我想,只需要这样就可以了。

但是...你用哪个版本的Git来创建这样的分支?Git版本1.8.4告诉我:

git checkout -b -new-br
fatal: '-new-br' is not a valid branch name.

尝试另一种方式...
git branch -- -new-br
fatal: '-new-br' is not a valid branch name

我建议您检查所有分支的名称:

git branch --list --all

参考资料:


让这个工作起来并不意味着你应该这样做。在你的分支名称中是否真的需要有一个前导破折号?! - S.Spencer
@S.Spencer:我肯定不是在提倡这样的分支名称! - johnsyweb
1
我没有看着你 :) - S.Spencer

8

这个可以正常工作! 在引号中添加你的分支名称

git checkout '<new-branch-name>'

1
单引号在Git Bash上可以使用,但在Windows命令提示符(CMD)上无法使用。 - user9440008

5

如果您已经有了这样的一个分支,您可以通过更改该分支的引用文件来重命名它:

mv .git/refs/heads/-new-br .git/refs/heads/new-br

之后,您可以使用git checkout new-br来检查它。


你也可以只需运行 ls .git/refs/heads/ -l 命令,获取/复制所需的分支名称。 - user2340939
谢谢,查看位置.git/refs/heads后,我发现了Git如何解释Unicode字符,然后使用命令git branch -m <新分支名称>在分支内进行重命名。 - Jonathan

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