简体中文 ▾ 主题 ▾ 最新版本 ▾ git-upload-pack 上次更新于 2.45.1

名称

git-upload-pack - 将打包的对象发送回 git-fetch-pack

概要

git-upload-pack [--[no-]strict] [--timeout=<n>] [--stateless-rpc]
		  [--advertise-refs] <directory>

描述

git fetch-pack 调用,它会了解对方缺少哪些对象,并在打包后发送它们。

此命令通常不由最终用户直接调用。该协议的用户界面在 git fetch-pack 一侧,这对程序旨在用于从远程仓库拉取更新。对于推送操作,请参阅 git send-pack

选项

--[no-]strict

如果 <directory> 不是 Git 仓库,则不要尝试 <directory>/.git/。

--timeout=<n>

在 <n> 秒不活动后中断传输。

--stateless-rpc

仅对标准输入和标准输出执行一次读写循环。这符合 HTTP POST 请求处理模型,在该模型中,程序可以读取请求、写入响应并必须退出。

--http-backend-info-refs

git-http-backend[1] 使用,用于处理 $GIT_URL/info/refs?service=git-upload-pack 请求。请参阅 gitprotocol-http[5] 中的“智能客户端”和 gitprotocol-v2[5] 文档中的“HTTP 传输”。git-receive-pack[1] 也理解此选项。

<directory>

要从中同步的仓库。

环境变量

GIT_PROTOCOL

用于握手线路协议的内部变量。服务器管理员可能需要配置某些传输方式以允许此变量传递。请参阅 git[1] 中的讨论。

GIT_NO_LAZY_FETCH

当从一个部分仓库(即其本身使用 --filter 克隆的仓库)克隆或获取时,服务器端的 upload-pack 可能需要从其上游获取额外的对象以完成请求。默认情况下,upload-pack 将拒绝执行此类“惰性获取”,因为 git fetch 可能会运行源仓库配置和钩子中指定的任意命令(而 upload-pack 即使在不受信任的 .git 目录中也力求安全运行)。

这是通过让 upload-pack 内部将 GIT_NO_LAZY_FETCH 变量设置为 1 来实现的。如果您想覆盖它(因为您正在从一个部分克隆中获取,并且您确信您信任它),您可以明确地将 GIT_NO_LAZY_FETCH 设置为 0

安全性

大多数 Git 命令不应在不受信任的 .git 目录中运行(请参阅 git[1] 中的 SECURITY 部分)。upload-pack 试图避免使用其所服务仓库中的任何危险配置选项或钩子,从而使其可以安全地克隆不受信任的目录并在生成的克隆上运行命令。

为了额外的安全级别,您可以尝试以备用用户身份运行 upload-pack。具体细节将取决于平台,但在许多系统中,您可以运行

git clone --no-local --upload-pack='sudo -u nobody git-upload-pack' ...

另请参阅

GIT

Git[1] 套件的一部分

scroll-to-top