Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.43.1 → 2.47.0 no changes
- 2.43.0 11/20/23
- 2.39.1 → 2.42.3 no changes
- 2.39.0 12/12/22
- 2.34.1 → 2.38.5 no changes
- 2.34.0 11/15/21
- 2.18.1 → 2.33.8 no changes
- 2.18.0 06/21/18
- 2.16.6 → 2.17.6 no changes
- 2.15.4 12/06/19
- 2.14.6 no changes
- 2.13.7 05/22/18
- 2.10.5 → 2.12.5 no changes
- 2.9.5 07/30/17
- 2.7.6 → 2.8.6 no changes
- 2.6.7 05/05/17
- 2.5.6 no changes
- 2.4.12 05/05/17
- 2.2.3 → 2.3.10 no changes
- 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)] [<主机地址>:]<目录> (--all | <引用>…)
描述
通常情况下,您需要使用 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
-
从标准输入流获取各个引用列表,每行一个。如果命令行中除此选项外还指定了其他引用,则会在处理命令行中的引用后再处理来自标准输入流的多个引用。
如果与此选项一起指定了
--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=<字符串>
-
传递指定字符串作为推送选项,供服务器端的钩子使用。 如果服务器不支持推送选项,则会出错。 详情参见 git-push[1] 和 githooks[5]。
- <主机>
-
存放仓库的远程主机。 如果指定了这一部分,就会通过 ssh 调用 "git-receive-pack"。
- <目录>
-
要更新的仓库。
- <引用>…
-
要更新的远程引用。
指定引用
有三种方法可以指定在远程端更新哪些参考文件。
使用 --all
标志时,本地存在的所有引用都会被传输到远端。 使用该标记时,不能指定任何 <引用>
。
如果不使用 --all
,也不使用任何 <引用>
,本地和远程都存在的磁头都会被更新。
当一个或多个 <引用> 被明确指定时(无论是在命令行还是通过 --stdin
),它既可以是一个单独的模式,也可以是一对由冒号 ":" 分隔的模式(这意味着引用名称中不能有冒号)。 单一模式 <名称> 只是 <名称>:<名称> 的简称。
每个模式对包括源端(冒号前)和目标端(冒号后)。 要推送的引用是通过找到与源侧相匹配的匹配来确定的,而推送到哪里则是通过目的地侧来确定的。用于匹配引用的规则与 "git rev-parse" 用于解析符号引用名称的规则相同。参见 git-rev-parse[1]。
-
如果 <源端> 与一个本地引用不完全匹配,则会出错。
-
如果 <目标> 匹配多个远程引用,则会出错。
-
如果 <目的端> 与任何远程引用不匹配,或者
-
它必须以 "refs/" 开头;在这种情况下,<dst> 被用作目标字面。
-
<src> == <dst>,并且与 <src> 相匹配的引用必须不存在于远程引用集合中;本地匹配的 <src>引用被用作目的地的名称。
-
如果不使用 --force
,只有当 <目标> 不存在,或者 <目标> 是 <源> 的适当子集(即祖先)时,<源> 引用才会被存储到远程引用中。 这种检查被称为 "快进检查"(fast-forward check),执行这种检查是为了避免意外覆盖远程引用并丢失其他人从那里提交的内容。
使用 --force
,所有裁判的快进检查都被禁用。
可以选择在 <ref> 参数前加上一个加号 + 号,以便仅在该引用上禁用快进检查。
GIT
属于 git[1] 文档