設定與組態
取得與建立專案
基本快照
分支與合併
分享與更新專案
檢視與比較
修補
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.43.1 → 2.47.0 沒有變更
-
2.43.0
11/20/23
- 2.38.1 → 2.42.3 沒有變更
-
2.38.0
10/02/22
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-line 描述的。
pkt-line 是一個可變長度的二進制字串。該行的前四個位元組 pkt-len 以十六進位表示,指出該行的總長度。pkt-len 包含用於包含長度十六進位表示的 4 個位元組。
pkt-line 可以包含二進制資料,因此實作者必須確保 pkt-line 解析/格式化常式是 8 位元清除的。
非二進制行應該以 LF 終止,如果存在則必須包含在總長度中。接收者必須以相同的方式處理具有非二進制資料的 pkt-line,無論它們是否包含尾隨 LF (如果存在則剝離 LF,如果缺失則不抱怨)。
pkt-line 資料元件的最大長度為 65516 個位元組。實作不得傳送長度超過 65520 的 pkt-line(65516 個位元組的酬載 + 4 個位元組的長度資料)。
實作不應該傳送空的 pkt-line ("0004")。
長度欄位為 0 的 pkt-line ("0000"),稱為 flush-pkt,是一種特殊情況,必須以不同於空的 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" ""
GIT
屬於 git[1] 套件的一部分