Git
英文 ▾ 主題 ▾ 最新版本 ▾ 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

僅使用 stdin 和 stdout 執行單次讀寫循環。這符合 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