目录搜索
GuidesgitattributesgiteverydaygitglossarygitignoregitmodulesgitrevisionsgittutorialgitworkflowsAdministrationgit archivegit bundlegit cleangit filter-branchgit fsckgit gcgit instawebgit reflogBasic Snapshottinggit addgit commitgit diffgit mvgit resetgit rmgit statusBranching and Merginggit branchgit checkoutgit loggit mergegit mergetoolgit stashgit tagDebugginggit bisectgit blamegit grepEmailgit amgit format-patchgit request-pullgit send-emailExternal Systemsgit fast-importgit svnGetting and Creating Projectsgit clonegit initGitgit annotategit archimportgit bisect-lk2009git check-attrgit check-mailmapgit check-ref-formatgit checkout-indexgit cherrygit citoolgit columngit credentialgit credential-cachegit credential-storegit cvsexportcommitgit cvsimportgit cvsservergit diff-filesgit diff-treegit difftoolgit fast-exportgit fetch-packgit fmt-merge-msggit get-tar-commit-idgit guigit http-backendgit http-fetchgit http-pushgit imap-sendgit index-packgit interpret-trailersgit ls-remotegit ls-treegit mailinfogit mailsplitgit merge-filegit merge-indexgit merge-one-filegit merge-treegit mktaggit mktreegit name-revgit notesgit p4git pack-objectsgit pack-redundantgit pack-refsgit parse-remotegit patch-idgit prunegit prune-packedgit quiltimportgit receive-packgit remote-extgit remote-fdgit remote-testgitgit repackgit replacegit rereregit send-packgit sh-i18ngit sh-setupgit shellgit show-branchgit show-indexgit stripspacegit unpack-filegit unpack-objectsgit upload-archivegit upload-packgit vargit verify-commitgit verify-taggit whatchangedgit worktreeInspection and Comparisongit describegit shortloggit showMiscellaneousapi credentialsapi indexgitcligitcore tutorialgitcredentialsgitcvs migrationgitdiffcoregithooksgitkgitnamespacesgitremote helpersgitrepository layoutgitsubmodulesgittutorial 2gitwebgitweb.confpack formatUser ManualPatchinggit applygit cherry-pickgit rebasegit revertPlumbing Commandsgit cat-filegit check-ignoregit commit-treegit count-objectsgit diff-indexgit for-each-refgit hash-objectgit ls-filesgit merge-basegit read-treegit rev-listgit rev-parsegit show-refgit symbolic-refgit update-indexgit update-refgit verify-packgit write-treeServer Admingit daemongit update-server-infoSetup and Configgitgit configgit helpSharing and Updating Projectsgit fetchgit pullgit pushgit remotegit submodule
文字

名称

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

概要

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

描述

通常你会想要使用git push这个命令的高级包装,而不是这个。见git-push [1]。

调用git-receive-pack可能是远程的存储库,并从当前的存储库更新它,发送名为 refs。

选项

--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)。每个 ref 必须位于一个单独的数据包中,并且该列表必须以 flush 数据包结尾。

--dry-run

除了实际发送更新之外,请做其他事

--force

通常,该命令拒绝更新远程 ref,该远程 ref 不是用于覆盖它的本地 ref 的祖先。此标志禁用检查。这意味着远程仓库可能会失去提交; 小心使用它。

--verbose

详细地运行。

--thin

发送一个“精简”包,该包根据包中未包含的对象以分辨形式记录对象,以减少网络流量。

--atomic

使用原子事务来更新参考。如果任何一个 ref 没有更新,那么整个 push 将会失败而不改变任何 refs。

--no-signed   --sign=(true|false|if-asked)

GPG-信号 推送请求以更新接收端的 refs,以便通过钩子检查和/或记录。如果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>,本地和远端存在的头都会更新。

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

每个模式对由源端(冒号前)和目标端(冒号后)组成。要推送的引用是通过找到匹配源端的匹配来确定的,并且推送的位置由目标端确定。用于匹配 ref 的规则与用于git rev-parse解析符号 ref 名称的规则相同。参见 git-rev-parse [1]。

  • 如果<src>不完全匹配一个本地引用,那是错误的。

  • 如果<dst>匹配多个远程引用,那是错误的。

  • 如果<dst>与任何远程参考不匹配

-  it has to start with "refs/"; <dst> is used as the destination literally in this case.
-  <src> == <dst> and the ref that matched the <src> must not exist in the set of remote refs; the ref matched <src> locally is used as the name of the destination.

如果没有--force,<src> ref仅在<dst>不存在的情况下存储在远程,或者<dst>是<src>的真子集(即祖先)。此检查称为“快进检查”,以避免意外覆盖远程参考并丢失其他人的提交。

与此同时--force,所有裁判都禁用快进检查。

可选地,一个<ref>参数可以带有加+号前缀以禁用仅在该 ref 上的快进检查。

上一篇:下一篇: