Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
概述
git check-ref-format [--normalize] [--[no-]allow-onelevel] [--refspec-pattern] <引用名> git check-ref-format --branch <branchname-shorthand>
描述
检查给定的 ‘引用名’ 是否可接受,如果不可接受,则以非零状态退出。
在 Git 中,引用被用来指定分支和标签。 分支头存储在 refs/heads
层次结构中,而标签存储在引用命名空间的 refs/tags
层次结构中(通常在 $GIT_DIR/refs/heads
和 $GIT_DIR/refs/tags
目录中,或者,如果引用是由 git gc
打包的,则作为文件 $GIT_DIR/packed-refs
的条目)。
Git 对引用的命名方式有以下规则:
-
它们可以包括斜线`/
,用于分层(目录)分组,但任何斜线分隔的组件都不能以点
.开头或以序列
.lock`结尾。 -
它们可以包括斜线
/
,用于分层(目录)分组,但任何斜线分隔的组件都不能以点.
开头或以序列.lock
结尾。 -
他们不能在任何地方有两个连续的点
..
。 -
它们不能有 ASCII 控制字符(即数值低于 \040,或 177
DEL
的字节)、空格、斜体字~
、省略号^
,或冒号:
的任何一个。 -
它们不能有问号
?
,星号*
,或大括号[`的地方。 参见下面的 `--refspec-pattern
选项,以了解这一规则的例外情况。 -
They cannot begin or end with a slash
/
or contain multiple consecutive slashes (see the--normalize
option below for an exception to this rule). -
它们不能以点
.
结尾。 -
它们不能包含一个序列
@{
。 -
它们不能是单个字符
@
。 -
它们不能包含一个
\
。
这些规则使基于 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"。 -
@{
被用来作为访问一个引用日志条目的符号。
With the --branch
option, the command takes a name and checks if it can be used as a valid branch name (e.g. when creating a new branch). But be cautious when using the previous checkout syntax that may refer to a detached HEAD state. The rule git check-ref-format --branch $name
implements may be stricter than what git check-ref-format refs/heads/$name
says (e.g. a dash may appear at the beginning of a ref component, but it is explicitly forbidden at the beginning of a branch name). When run with the --branch
option in a repository, the input is first expanded for the “previous checkout syntax” @{-n}
. For example, @{-1}
is a way to refer the last thing that was checked out using "git switch" or "git checkout" operation. This option should be used by porcelains to accept this syntax anywhere a branch name is expected, so they can act as if you typed the branch name. As an exception note that, the “previous checkout operation” might result in a commit object name when the N-th last thing checked out was not a branch.
选项
- --[no-]allow-onelevel
-
控制是否接受单级参考名称(即不包含多个
/
分隔的参考名称)。 默认值是--no-allow-onelevel
。 - --refspec-pattern
-
将 <引用名> 解释为引用规范的参考名称模式(如用于远程仓库)。 如果这个选项被启用,<引用名> 允许在引用规范中包含一个
*
(例如,foo/bar*/baz
或foo/bar*baz/
,但不允许foo/bar*/baz*
)。 - --normalize
-
将 ‘引用名’ 规范化,去掉任何前导斜线(
/
)字符,并将名称成分之间的相邻斜线折叠成一个斜线。 如果规范化后的引用名有效,则将其打印到标准输出,并以 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] 文档