关于分支和� �记名称
大多数存储库使用简单的分支名称,例如 main
或 update-icons
。 � �记名称通常也遵循基本� �式,例如版本号,如 v1.2.3
。 分支名称和� �记名称也可以使用路径分隔符 (/
) 来构� ,例如 area/item
或 level-1/level-2/level-3
。 除了一些例外,例如名称不以斜� 开头或结尾,或者在名称中有连续斜� ,Git 对分支和� �记名称中可以使用的字符� 乎没有限制。 更多信息请参阅 Git 文档中的“git-check-ref-format”。
为什么需要对特殊字符进行转义
使用 CLI 时,您可能会遇到分支或� �记名称包含对 shell 环境具有特殊含义的特殊字符的情况。 要在 Git 命令中安全地使用这些字符,必须用引号或转义它们,否则该命令可能会产生意外效果。
例如, $
字符被许多 shell 用来引用变量。 大多数 shell 会将有效的分支名称(如 hello-$USER
)解释为等效于单词“hello”,后跟连字符,后跟 USER
变量的当前值,而不是 hello-$USER
的文字字符串。 如果分支名称包含 $
字符,则必须阻止 shell 将其扩展为变量引用。 类似地,如果分支名称包含分号 (;
),大多数 shell 将其解释为命令分隔符,� 此需要用引号或转义。
如何对分支和� �记名称中的特殊字符进行转义
大多数带有特殊字符的分支和� �记名称都可以通过在单引号中包含名称来处理,例如 "hello-$USER"
。
- 在 Bash shell 中,将字符串括在单引号中将保留单引号内字符的文字值。
- Zsh 的行为与 Bash 类似,但可以使用
RC_QUOTES
选项配置此行为。 - PowerShell 在单引号内时也会按字面意思处理字符。
对于这些 shell,主要的例外是分支或� �记名称本身包含单个引号。 在这种情况下,您应该查阅 shell 的官方文档:
命名分支和� �记
如果可能,请创建不包含特殊字符的分支和� �记名称,� 为这些字符需要转义。 用于分支名称和� �记名称的安全默认字符集为:
- 英文字母(
a
到z
和A
到Z
) - 数字(
0
到9
) - 有限的� �点字符集:
- 句点 (
.
) - 连字符 (
-
) - 下划线 (
_
) - 正斜� (
/
)
- 句点 (
为避免混淆,分支名称应以字母开头。