遇到了過早的文件結束符EOF時不要着急,我們來看看怎么解決
導言
近期使用git拉取倉庫的時候,拉取了好幾次都不行,總是反饋說過早的文件結束符
fatal: 過早的文件結束符(EOF)
fatal: 無效的index-pack輸出
總是這樣,當然我的報錯信息並沒有描述完整,因為在我檢索此類問題的時候,我發現有好多種所謂的過早的文件結束符
這樣的報錯,但是細節部分描述不太一致。
問題情景1
比如說,我的完整報錯信息是這樣的:
client_loop: send disconnect: Broken pipe | 9.00 KiB/s
fetch-pack: unexpected disconnect while reading sideband packet
fatal: 過早的文件結束符(EOF)
fatal: fetch-pack: 無效的 index-pack 輸出
關鍵信息在前兩行,前兩行告訴我們發生了某種斷開連接, 9.00 KiB/s應該是表示網絡速率
,因此可以確定,發生這個問題的原因屬於網絡部分,本機連接倉庫服務器時網絡不穩定 我把無線網絡更換為手機分享的熱點之后,再次嘗試,問題解決。所以遇到這個問題的時候,要么切換成4G熱點或者其他網絡,要么可以等待一段時間再嘗試。
問題情景2
我還看到另一種,我們來看完整的報錯信息:
error: RPC failed; curl 12 tranfer closed with outstanding read data remaining.
fatal: The remote end hung up unexpectedly
fatal: 過早的文件結束符(EOF)
fatal: index-pack失敗
關鍵信息是第一行的curl,出現這個關鍵詞,基本可以確定是由於遠程倉庫中存在過大的文件,我們可以擴大一下傳輸限制
開啟git bash
,然后輸入 git config --global http.postBuffer 1048576 * 10
。當然了,你在設置http的postBuffer值時要參考你的倉庫文件大小,我上面 10485760
是10MB
的大小限制,滿足最大文件的大小即可,除此之外還有另一種方法,可以在資源管理器 > 用戶 > $YOUR_NAME > .gitconfig
中右鍵編輯此文件,添加如下內容:
[http](如果沒有http這個分類需要添加此行,有的話直接在分類下追加)
postBuffer = 10485760
然后保存,重新拉取,問題解決。
總結
由此可見,出現報錯時,仔細閱讀、分析並理解報錯信息是極為重要的,如果你沒看明白,一定要多讀幾次,只有讀懂了關鍵信息,才能在下次遇到的時候,得知你們曾經見過面。