我正在使用git-svn从svn迁移到git,并且我的某些分支名称以'-'开头。现在有了帮助表格this问题和this迁移文档,我能够传递以'-'开头的参数。但是在创建分支git时会返回错误说明:
致命:'-CLOSED-mybranch'不是有效的分支名称。
我正在使用gitlab。我正在运行的用于创建分支的命令是:
git for-each-ref refs/remotes | cut -d / -f 3- | grep -v @ | while read branchname; do git branch -- "$branchname" --"refs/remotes/$branchname"; git branch -r -d -- "$branchname"; done
This文章介绍了合法的分支机构名称,我认为我的分支机构名称为Legal。谁能告诉我问题出在哪里?
PS:成功导入不以'-'开头的分支名称。
$ git branch "-test"
error: unknown switch `e'
[它显然认为我试图设置git branch
选项-t
,然后在以下e
上给出错误。
也不适用于此命令:
$ git checkout -b "-test" fatal: '-test' is not a valid branch name.
在这种情况下,实际上是说-test
不是有效的分支名称。因此,最好更改分支名称,以使它们不会以破折号开头。
man 1 git-check-ref-format
中找到:Git对引用的命名方式强加以下规则:
对于层次结构(目录)分组,它们可以包括斜杠
/
,但是斜杠分隔的组件不能以点.
开头或以序列.lock
结束。它们必须至少包含一个
/
。这将强制出现heads/
,tags/
等类别,但实际名称不受限制。如果使用--allow-onelevel
选项,则将免除此规则。它们不能有两个连续的点
.
。任何地方。它们不能在任何地方都具有ASCII控制字符(即,值小于\ 040或\ 177
DEL
的字节),空格,代字号~
,脱字符号^
或冒号:
。他们在任何地方都不能带有问号
?
,星号*
或开括号[
。有关此规则的例外,请参见下面的--refspec-pattern
选项。它们不能以斜杠
/
开头或结尾,也不能包含多个连续的斜杠(有关此规则的例外,请参见下面的--normalize
选项)它们不能以点号
.
结尾。它们不能包含序列
@{
。它们不能为单个字符
@
。它们不能包含
\
。
references的规则。
branches有一套更严格的规则,它们似乎未在手册中列出,但其中提到:
破折号可能会出现在ref组件的开头,但在分支名称的开头明确禁止使用这正是您的情况。换句话说,是非法的,但您仍然无法检出它。) >foo/bar/-test
有效,而-test
无效。最后,您可以通过创建其他名称的分支来<>作弊,然后转到
.git/refs/heads
并在其中重命名(使用mv
)。然后,您将拥有此分支,可以在git branch
中看到它(与分支不同,分支的名称对于reference