設定與配置
取得與建立專案
基本快照
分支與合併
分享與更新專案
檢視與比較
修補
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.43.1 → 2.47.0 無變更
-
2.43.0
11/20/23
- 2.23.1 → 2.42.3 無變更
-
2.23.0
08/16/19
- 2.17.0 → 2.22.5 無變更
-
2.16.6
12/06/19
-
2.15.4
12/06/19
- 2.13.7 → 2.14.6 無變更
-
2.12.5
09/22/17
- 2.11.4 無變更
-
2.10.5
09/22/17
- 2.7.6 → 2.9.5 無變更
-
2.6.7
05/05/17
- 2.1.4 → 2.5.6 無變更
-
2.0.5
12/17/14
概要
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 個父系和剝洋蔥操作。 -
冒號
:
用於 fetch 和 push 操作中的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。如果正規化的 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] 套件的一部分