設定和配置
獲取和建立專案
基本快照
分支與合併
共享和更新專案
檢查和比較
打補丁
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.50.1 → 2.52.0 無更改
-
2.50.0
2025-06-16
- 2.43.1 → 2.49.1 無更改
-
2.43.0
2023-11-20
- 2.38.1 → 2.42.4 無更改
-
2.38.0
2022-10-02
ABNF 記法
協議文件中使用 RFC 5234 中描述的 ABNF 記法,但使用了以下替換的核心規則:
HEXDIG = DIGIT / "a" / "b" / "c" / "d" / "e" / "f"
我們還定義了以下通用規則:
NUL = %x00 zero-id = 40*"0" obj-id = 40*(HEXDIGIT) refname = "HEAD" refname /= "refs/" <see discussion below>
refname 是一個分層位元組字串,以 "refs/" 開頭,並且不違反 git-check-ref-format 命令的驗證規則。具體來說,它們:
-
它們可以包含斜槓
/進行分層(目錄)分組,但任何斜槓分隔的元件都不能以點.開頭。 -
它們必須包含至少一個
/。這強制要求存在一個類別,如heads/、tags/等,但實際名稱不受限制。 -
它們不能在任何地方包含兩個連續的點
..。 -
它們不能在任何地方包含 ASCII 控制字元(即位元組值小於 \040,或 \177
DEL)、空格、波浪號~、插入符號^、冒號:、問號 ?、星號*或開方括號 [。 -
它們不能以斜槓
/或點.結尾。 -
它們不能以序列
.lock結尾。 -
它們不能包含序列
@{。 -
它們不能包含 \\。
pkt-line 格式
大部分(但非全部)的載荷是圍繞 pkt-lines 描述的。
pkt-line 是一個可變長度的二進位制字串。行的前四個位元組,即 pkt-len,表示行的總長度,以十六進位制表示。pkt-len 包括用於包含長度十六進位制表示的 4 個位元組。
pkt-line MAY 包含二進位制資料,因此實現者 MUST 確保 pkt-line 解析/格式化例程是 8 位乾淨的。
非二進位制行 SHOULD BE 以 LF 結尾,如果存在,則必須包含在總長度中。接收者 MUST 像處理包含 LF 的 pkt-lines 一樣處理不包含 LF 的 pkt-lines(如果存在則剝離 LF,如果缺失則不抱怨)。
pkt-line 資料元件的最大長度為 65516 位元組。實現 MUST NOT 傳送長度超過 65520(65516 位元組的載荷 + 4 位元組的長度資料)的 pkt-line。
實現 SHOULD NOT 傳送空 pkt-line ("0004")。
長度欄位為 0 ("0000") 的 pkt-line,稱為 flush-pkt,是一種特殊情況,MUST 被不同於空 pkt-line ("0004") 的方式處理。
pkt-line = data-pkt / flush-pkt data-pkt = pkt-len pkt-payload pkt-len = 4*(HEXDIG) pkt-payload = (pkt-len - 4)*(OCTET) flush-pkt = "0000"
示例(如 C 風格字串)
pkt-line actual value --------------------------------- "0006a\n" "a\n" "0005a" "a" "000bfoobar\n" "foobar\n" "0004" ""