Watch at Ease看見世界,讀懂生活。

科技 · 實用指南

Git 顯示「RPC failed; curl 92」?改緩衝區前先證明 HTTP/2 邊界

curl 92 只證明 HTTP/2 串流失敗,並不證明 Git 需要更大緩衝區。保留傳輸未完成線索,一次只比較一個協定或路徑變數,保留任何繞行前先驗證物件庫。

原創示意圖:Git 顯示「RPC failed; curl 92」?改緩衝區前先證明 HTTP/2 邊界(边界图)
原創示意圖:固定儲存庫、命令、憑據和路徑,先跑基線,再用 git -c http.version=HTTP/1.1 對照;-c 不會污染全域設定。 Watch at Ease

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 存在並通過適用驗證才算結案;最後移除暫時覆寫。

原創示意圖:Git 顯示「RPC failed; curl 92」?改緩衝區前先證明 HTTP/2 邊界(决策图)
原創示意圖:只有命令完成、沒有 early EOF/index-pack 錯誤、預期 refs 存在並通過適用驗證才算結案;最後移除暫時覆寫。 Watch at Ease