设置和配置
获取和创建项目
基本快照
分支和合并
共享和更新项目
检查和比较
打补丁
调试
邮件
外部系统
服务器管理
指南
管理
底层命令
- 2.43.1 → 2.49.0 没有变化
-
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 可以包含二进制数据,因此实施者必须确保 pkt-line 解析/格式化例程是 8 位干净的。
非二进制行应该以 LF 结尾,如果存在,则必须包含在总长度中。 接收器必须以相同的方式处理具有非二进制数据的 pkt-lines,无论它们是否包含尾随 LF(如果存在,则删除 LF,并且在缺少 LF 时不抱怨)。
pkt-line 数据组件的最大长度为 65516 字节。 实现不得发送长度超过 65520 的 pkt-line(65516 字节的有效负载 + 4 字节的长度数据)。
实现不应发送空的 pkt-line ("0004")。
长度字段为 0 ("0000") 的 pkt-line(称为 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] 套件