設定和配置
獲取和建立專案
基本快照
分支與合併
共享和更新專案
檢查和比較
打補丁
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.43.1 → 2.50.1 無更改
-
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
形式,在 fetch 和 push 操作中表示“使用 srcref 的值並將其儲存在 dstref 中”。它也可以用於選擇特定的物件,例如與 'git cat-file' 一起使用時:“git cat-file blob v1.3.3:refs.c”。 -
at-open-brace
@{
用作訪問 reflog 條目的表示法。
使用 --branch
選項時,該命令接受一個名稱並檢查其是否可用作有效的分支名稱(例如,在建立新分支時)。但請注意,使用舊的 checkout 語法時可能會引用分離的 HEAD 狀態。 git
check-ref-format
--branch
$name
所實現的規則可能比 git
check-ref-format
refs/heads/$name
所說的更嚴格(例如,破折號可以出現在引用元件的開頭,但在分支名稱的開頭是明確禁止的)。當在倉庫中執行帶有 --branch
選項時,輸入會首先針對“上一次檢出語法” @{-n}
進行擴充套件。例如,@{-1}
是指透過 "git switch" 或 "git checkout" 操作檢出的上一個內容的引用方式。此選項應由高層命令(porcelains)使用,以便在任何預期分支名稱的地方接受此語法,從而使它們表現得如同您輸入了分支名稱一樣。值得注意的是,作為例外,“上一次檢出操作”在第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 ; }