Skip to content

git-fetch-pack

从另一个仓库接收缺失的对象

概要

'git fetch-pack' [--all] [--quiet|-q] [--keep|-k] [--thin] [--include-tag]
	[--upload-pack=<git-upload-pack>]
	[--depth=<n>] [--no-progress]
	[-v] <repository> [<refs>...]

描述

通常您会想要使用 'git fetch',它是此命令的更高级别包装器。

在可能远程的仓库上调用 'git-upload-pack',并请求它发送此仓库中缺失的对象,以更新指定的头。本地可用的提交列表通过扫描本地 refs/ 层次结构找到,并发送到在另一端运行的 'git-upload-pack'。

当本地没有共同的祖先提交时,此命令会退化为从远程下载所有内容以完成请求的引用。

选项

  • --all 获取所有远程引用。

  • --stdin 从 stdin 获取引用列表,每行一个。如果除了此选项外还在命令行上指定了引用,则 stdin 中的引用在命令行上的引用之后处理。 如果 --stateless-rpc 与此选项一起指定,则引用列表必须采用数据包格式(pkt-line)。每个引用必须在单独的数据包中,列表必须以刷新数据包结束。

  • -q, --quiet-q 标志传递给 'git unpack-objects';这使克隆过程不那么详细。

  • -k, --keep 不对接收到的数据调用 'git unpack-objects',而是从中创建单个包文件并将其存储在对象数据库中。如果提供两次,则包将被锁定以防止重新打包。

  • --thin 获取"瘦"包,它以基于不包含在包中的对象的增量形式记录对象,以减少网络流量。

  • --include-tag 如果远程端支持,带注释的标签对象将在同一连接上与其他对象一起下载,前提是标签引用的对象被下载。调用者必须另外确定此选项使其可用的标签。

  • --upload-pack=<git-upload-pack> 如果在您的 $PATH 上找不到 'git-upload-pack',请使用此选项指定远程端 'git-upload-pack' 的路径。sshd 的安装会忽略登录 shell 的用户环境设置脚本(例如 .bash_profile),您私下安装的 git 可能在系统默认 $PATH 上找不到。另一个建议的解决方法是在 ".bashrc" 中设置您的 $PATH,但此标志适用于不想通过拥有精简的 .bashrc 文件来为非交互式 shell 支付开销的人(他们在 .bash_profile 中设置大部分内容)。

  • --exec=<git-upload-pack> 与 --upload-pack=<git-upload-pack> 相同。

  • --depth=<n> 将获取限制为不超过 n 的祖先链。'git-upload-pack' 将特殊深度 2147483647 视为无限,即使存在那么长的祖先链。

  • --shallow-since=<date> 加深或缩短浅层仓库的历史以包含 <date> 之后的所有可达提交。

  • --shallow-exclude=<ref> 加深或缩短浅层仓库的历史以排除从指定远程分支或标签可达的提交。此选项可以指定多次。

  • --deepen-relative 参数 --depth 指定从当前浅层边界开始的提交数,而不是从每个远程分支历史的顶端开始。

  • --refetch 跳过与服务器协商提交以获取所有匹配的对象。用于重新应用新的部分克隆 blob/树过滤器。

  • --no-progress 不显示进度。

  • --check-self-contained-and-connected 如果接收到的包是自包含且连接的,则输出 "connectivity-ok"。

  • -v 详细运行。

  • <repository> 远程仓库的 URL。

  • <refs>... 要更新的远程头。这是相对于 $GIT_DIR 的(例如 "HEAD"、"refs/heads/master")。未指定时,从远程端拥有的所有头更新。 如果远程启用了 uploadpack.allowTipSHA1InWantuploadpack.allowReachableSHA1InWantuploadpack.allowAnySHA1InWant 选项,它们也可以是远程上存在的 40 位十六进制 sha1。

另请参阅

git-fetch(1)

Git

git(1) 套件的一部分

基于 CC BY-NC-SA 3.0 许可发布