簡體中文 ▾ 主題 ▾ 最新版本 ▾ git-upload-pack 最後更新於 2.52.0

名稱

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

選項

--strict
--no-strict

如果 <directory> 不是 Git 儲存庫,則不嘗試檢查 <directory>/.git/。

--timeout=<n>

在空閒 <n> 秒後中斷傳輸。

--stateless-rpc

只執行一次 stdin 和 stdout 的讀寫週期。這符合 HTTP POST 請求處理模型,程式可以讀取請求,寫入響應,然後退出。

--http-backend-info-refs

git-http-backend[1] 用於響應 $GIT_URL/info/refs?service=git-upload-pack 請求。請參閱 gitprotocol-http[5] 中的“Smart Clients”以及 gitprotocol-v2[5] 文件中的“HTTP Transport”。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] 套件的一部分