设置和配置
获取和创建项目
基本快照
分支和合并
共享和更新项目
检查和比较
补丁
调试
外部系统
服务器管理
指南
管理
底层命令
- 2.43.1 → 2.49.0 无更改
-
2.43.0
2023-11-20
- 2.23.1 → 2.42.4 无更改
-
2.23.0
2019-08-16
- 2.17.0 → 2.22.5 无更改
-
2.16.6
2019-12-06
-
2.15.4
2019-12-06
- 2.13.7 → 2.14.6 无更改
-
2.12.5
2017-09-22
- 2.11.4 无更改
-
2.10.5
2017-09-22
- 2.7.6 → 2.9.5 无更改
-
2.6.7
2017-05-05
- 2.1.4 → 2.5.6 无更改
-
2.0.5
2014-12-17
概要
git check-ref-format [--normalize] [--[no-]allow-onelevel] [--refspec-pattern] <refname> git check-ref-format --branch <branchname-shorthand>
描述
检查给定的 refname 是否可接受,如果不可接受,则以非零状态退出。
引用在 Git 中用于指定分支和标签。分支头存储在 refs/heads
层次结构中,而标签存储在引用命名空间的 refs/tags
层次结构中(通常在 $GIT_DIR/refs/heads
和 $GIT_DIR/refs/tags
目录中,或者如果引用由 git gc
打包,则作为文件 $GIT_DIR/packed-refs
中的条目)。
Git 对引用的命名方式施加了以下规则
-
它们可以包含斜杠
/
用于分层(目录)分组,但没有斜杠分隔的组件可以以点.
开头或以序列.lock
结尾。 -
它们必须包含至少一个
/
。 这强制存在一个类别,例如heads/
、tags/
等,但实际名称不受限制。 如果使用--allow-onelevel
选项,则此规则将被放弃。 -
它们在任何地方都不能有两个连续的点
..
。 -
它们不能在任何地方都有 ASCII 控制字符(即,值低于 \040 或 \177
DEL
的字节)、空格、波浪号~
、插入符号^
或冒号:
。 -
它们不能在任何地方都有问号
?
、星号*
或左方括号[
。 有关此规则的例外情况,请参见下面的--refspec-pattern
选项。 -
它们不能以斜杠
/
开头或结尾,也不能包含多个连续的斜杠(有关此规则的例外情况,请参见下面的--normalize
选项)。 -
它们不能以点
.
结尾。 -
它们不能包含序列
@{
。 -
它们不能是单个字符
@
。 -
它们不能包含
\
。
这些规则使基于 shell 脚本的工具可以轻松解析引用名称,在引用名称被错误地不加引号使用时进行 shell 的路径名扩展,并避免某些引用名称表达式中的歧义(请参阅 gitrevisions[7])
-
双点
..
经常用于ref1..ref2
中,在某些上下文中,此表示法表示^ref1 ref2
(即不在ref1
中而是在ref2
中)。 -
波浪号
~
和插入符号^
用于引入后缀第 n 个父级和剥离洋葱操作。 -
冒号
:
用于srcref:dstref
中,表示在获取和推送操作中“使用 srcref 的值并将其存储在 dstref 中”。 它也可以用于选择特定的对象,例如使用 'git cat-file':"git cat-file blob v1.3.3:refs.c"。 -
at-open-brace
@{
用作访问 reflog 条目的表示法。
使用 --branch
选项,该命令接受一个名称并检查它是否可以用作有效的分支名称(例如,在创建新分支时)。 但是,当使用可能引用分离 HEAD 状态的先前检出语法时,请务必小心。 git check-ref-format --branch $name
实现的规则可能比 git check-ref-format refs/heads/$name
说的更严格(例如,短划线可能出现在引用组件的开头,但明确禁止在分支名称的开头出现)。 在存储库中使用 --branch
选项运行时,首先扩展输入以进行“先前的检出语法” @{-n}
。 例如,@{-1}
是一种引用使用“git switch”或“git checkout”操作检出的最后一件事的方式。 瓷器应使用此选项来接受期望分支名称的任何地方的此语法,以便它们可以表现得好像您键入了分支名称一样。 作为例外,请注意,“先前的检出操作”可能会导致提交对象名称,当第 N 个最后检出的东西不是分支时。
选项
- --[no-]allow-onelevel
-
控制是否接受单级引用名称(即,不包含多个
/
分隔的组件的引用名称)。 默认值为--no-allow-onelevel
。 - --refspec-pattern
-
将 <refname> 解释为 refspec 的引用名称模式(与远程存储库一起使用)。 如果启用此选项,则允许 <refname> 在 refspec 中包含单个
*
(例如,foo/bar*/baz
或foo/bar*baz/
,但不能是foo/bar*/baz*
)。 - --normalize
-
通过删除任何前导斜杠 (
/
) 字符并将名称组件之间相邻斜杠的运行折叠为单个斜杠来规范化 refname。 如果规范化的引用名称有效,则将其打印到标准输出并以状态 0 退出,否则以非零状态退出。(--print
是一种已弃用的拼写--normalize
的方法。)
示例
-
打印上次检出的内容的名称
$ git check-ref-format --branch @{-1}
-
确定用于新分支的引用名称
$ ref=$(git check-ref-format --normalize "refs/heads/$newbranch")|| { echo "we do not like '$newbranch' as a branch name." >&2 ; exit 1 ; }
GIT
属于 git[1] 套件的一部分