科技 · 實用指南
Git 顯示「RPC failed; curl 92」?改緩衝區前先證明 HTTP/2 邊界
curl 92 只證明 HTTP/2 串流失敗,並不證明 Git 需要更大緩衝區。保留傳輸未完成線索,一次只比較一個協定或路徑變數,保留任何繞行前先驗證物件庫。

curl 92 只證明 HTTP/2 串流失敗,並不證明 Git 需要更大緩衝區。保留傳輸未完成線索,一次只比較一個協定或路徑變數,保留任何繞行前先驗證物件庫。
libcurl 92 代表 HTTP/2 框架層串流錯誤,無法指出 Git、網路、代理或伺服器誰造成重設。 記錄操作是 clone、fetch、pull 或 push;下載與上傳路徑不同。 用 git -c http.version=HTTP/1.1 做單次對照,不先寫入全域設定。
固定操作、儲存庫與不完整傳輸證據
保存完整錯誤鏈,包括串流編號、重設名稱、尚缺位元組、early EOF 與 index-pack 訊息。記錄 Git 版本、命令、遠端主機及時間並移除憑據。
只在新暫存目錄或安全目標重試,不把半成品工作樹當作可用儲存庫,也不刪除既有正常 clone。
先切分儲存庫和操作範圍
在乾淨位置對同一遠端執行相同操作,再比較同主機另一儲存庫;有授權時可由另一台已知正常主機測試。
clone/fetch 接收 pack,push 傳送請求。給 push 的 postBuffer 建議不能直接套到 clone;depth/filter 只算有限診斷。
執行一次可逆的 HTTP 版本對照
固定儲存庫、命令、憑據和路徑,先跑基線,再用 git -c http.version=HTTP/1.1 對照;-c 不會污染全域設定。
HTTP/1.1 成功只將嫌疑縮到依賴 HTTP/2 的客戶端、中介或遠端;若兩者都失敗就停止改協定。
逐項比較網路及中介邊界
同一命令只換一條獲准路徑,例如有線/無線、可信網路/公司代理,或管理員控制的負載平衡器旁路。
不要同時改協定、網路、Git 版本、深度與緩衝;必要時私存並去識別 GIT_CURL_VERBOSE 追蹤。
拒絕盲調緩衝並驗證 Git 結果
先查 git config --show-origin --get-all http.postBuffer。此設定無法補回 clone 回應缺少的位元組。
只有命令完成、沒有 early EOF/index-pack 錯誤、預期 refs 存在並通過適用驗證才算結案;最後移除暫時覆寫。
