English ▾ 主题 ▾ 最新版本 ▾ git-send-pack 上次更新于 2.43.0

名称

git-send-pack - 通过 Git 协议将对象推送到另一个存储库

概要

git send-pack [--mirror] [--dry-run] [--force]
		[--receive-pack=<git-receive-pack>]
		[--verbose] [--thin] [--atomic]
		[--[no-]signed | --signed=(true|false|if-asked)]
		[<host>:]<directory> (--all | <ref>…​)

描述

通常您会想使用 *git push*,它是此命令的更高级别的包装器。请参阅 git-push[1]

在可能远程的存储库上调用 *git-receive-pack*,并从当前存储库更新它,发送指定的引用。

选项

--receive-pack=<git-receive-pack>

远程端 *git-receive-pack* 程序的路径。当通过 ssh 推送到远程存储库,并且您的程序不在默认 $PATH 的目录中时,有时很有用。

--exec=<git-receive-pack>

与 --receive-pack=<git-receive-pack> 相同。

--all

与其明确指定要更新的引用,不如更新所有本地存在的 head。

--stdin

从 stdin 获取引用列表,每行一个。如果除了此选项之外,命令行上还指定了引用,则在命令行上的引用之后处理来自 stdin 的引用。

如果 --stateless-rpc 与此选项一起指定,则引用列表必须采用数据包格式 (pkt-line)。每个引用必须位于单独的数据包中,并且列表必须以刷新数据包结尾。

--dry-run

执行所有操作,但不实际发送更新。

--force

通常,该命令拒绝更新不是用于覆盖它的本地引用的祖先的远程引用。此标志禁用此检查。这意味着远程存储库可能会丢失提交;请谨慎使用。

--verbose

以冗长模式运行。

--thin

发送一个“瘦”包,该包基于未包含在包中的对象以差异形式记录对象,以减少网络流量。

--atomic

使用原子事务来更新引用。如果任何引用更新失败,则整个推送将失败,而不会更改任何引用。

--[no-]signed
--signed=(true|false|if-asked)

GPG 签署推送请求以更新接收端的引用,以允许钩子检查和/或记录。如果为 false--no-signed,则不会尝试签名。如果为 true--signed,如果服务器不支持签名推送,则推送将失败。如果设置为 if-asked,则仅当服务器支持签名推送时才签名。如果对 gpg --sign 的实际调用失败,推送也会失败。有关接收端的详细信息,请参阅 git-receive-pack[1]

--push-option=<string>

传递指定的字符串作为推送选项,供服务器端的钩子使用。如果服务器不支持推送选项,则出错。有关详细信息,请参阅 git-push[1]githooks[5]

<host>

托管存储库的远程主机。指定此部分时,通过 ssh 调用 *git-receive-pack*。

<directory>

要更新的存储库。

<ref>…​

要更新的远程引用。

指定引用

有三种方法可以指定要在远程端更新哪些引用。

使用 --all 标志,所有本地存在的引用都会传输到远程端。如果使用此标志,则不能指定任何 *<ref>*。

如果没有 --all 并且没有任何 *<ref>*,则更新本地和远程都存在的 head。

当显式指定一个或多个 *<ref>*(无论是在命令行上还是通过 --stdin)时,它可以是单个模式,也可以是由冒号 ":" 分隔的这样一对模式(这意味着引用名称中不能包含冒号)。单个模式 *<name>* 只是 *<name>:<name>* 的简写。

每个模式对都包含源端(冒号之前)和目标端(冒号之后)。要推送的引用由查找与源端匹配的匹配项来确定,推送的位置由使用目标端来确定。用于匹配引用的规则与 *git rev-parse* 用于解析符号引用名称的规则相同。请参阅 git-rev-parse[1]

  • 如果 <src> 与本地引用中的一个不完全匹配,则会出错。

  • 如果 <dst> 匹配多个远程引用,则会出错。

  • 如果 <dst> 与任何远程引用都不匹配,则

    • 它必须以 "refs/" 开头;在这种情况下,<dst> 被字面地用作目标。

    • <src> == <dst> 且匹配 <src> 的引用不得存在于远程引用集中;本地匹配 <src> 的引用用作目标的名称。

如果没有 --force,则只有当 <dst> 不存在,或者 <dst> 是 <src> 的适当子集(即祖先)时,<src> 引用才会存储在远程。执行此检查(称为“快进检查”)是为了避免意外覆盖远程引用并从那里丢失其他人的提交。

使用 --force 时,将为所有引用禁用快进检查。

可选地,可以在 <ref> 参数前面加上加号 + 以仅在该引用上禁用快进检查。

GIT

git[1] 套件的一部分

scroll-to-top