簡體中文 ▾ 主題 ▾ 最新版本 ▾ 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