设置和配置
获取和创建项目
基本快照
分支和合并
共享和更新项目
检查和比较
补丁
调试
电子邮件
外部系统
服务器管理员
指南
管理
底层命令
- 2.43.1 → 2.47.0 无更改
- 2.43.0 11/20/23
- 2.39.1 → 2.42.3 无更改
- 2.39.0 12/12/22
- 2.34.1 → 2.38.5 无更改
- 2.34.0 11/15/21
- 2.18.1 → 2.33.8 无更改
- 2.18.0 06/21/18
- 2.16.6 → 2.17.6 无更改
- 2.15.4 12/06/19
- 2.14.6 无更改
- 2.13.7 05/22/18
- 2.10.5 → 2.12.5 无更改
- 2.9.5 07/30/17
- 2.7.6 → 2.8.6 无更改
- 2.6.7 05/05/17
- 2.5.6 无更改
- 2.4.12 05/05/17
- 2.2.3 → 2.3.10 无更改
- 2.1.4 12/17/14
- 2.0.5 12/17/14
概要
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
-
不显式指定要更新的引用,而是更新本地存在的所有头。
- --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>
-
容纳仓库的远程主机。指定此部分时,git-receive-pack 通过 ssh 调用。
- <directory>
-
要更新的仓库。
- <ref>…
-
要更新的远程引用。
指定引用
有三种方法可以指定在远程端要更新哪些引用。
使用 --all
标志,所有本地存在的引用都会传输到远程端。如果使用此标志,则不能指定任何 <ref>。
不使用 --all
且不使用任何 <ref>,本地和远程端都存在的头将被更新。
当显式指定一个或多个 <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] 套件的一部分