問題
在使用git push推送大文件(超過了100MB)到GitHub遠程倉庫時提示異常,異常信息如下:
fatal: sha1 file '<stdout>' write error: Broken pipe
fatal: the remote end hung up unexpectedly
通過查閱了一些資料,我發現是因為GitHub對提交的文件大小做了限制,GitHub會阻止超過100 MB的推送(單文件),檢查了一下我提交的文件中有一個超過200MB的文件。
解決方案一
1、將本地 http.postBuffer
數值調整到GitHub服務對應的單次上傳大小配置
注意:我這里設置的是500MB(大家可以根據自己的需要設置)。
http.postBuffer默認單位為B(字節),所以500MB=1024*1024*500。
# 方法一:全局配置 git config --global http.postBuffer 524288000 或者 # 方法二:當前倉庫配置 git config http.postBuffer 524288000
2、查看 http.postBuffer
數值是否設置成功
# 查看當前的Git配置
git config --list
3、最后在重新使用git push推送代碼到GitHub遠程倉庫中
git push
4、最后如果發現還是無法提交可以使用git命令撤回commit提交,找到超過100MB的文件進行刪除
#查詢提交日志,獲取提交head
git log
#撤銷commit到指定的版本,本地修改的文件不會變動
git reset --soft 77e3f9eb02b96d7d2ea5def048fb4f1d07f19868
找到你提交的文件中超過100MB的文件進行刪除,然后重新添加,提交即可。
解決方案二
安裝 Git 大文件存儲(Git LFS)
什么是LFS?
Git LFS(Git Large File Storage),即Git大文件存儲技術,相當於Git的一種插件式增強工具,簡單講,它是在Git倉庫使用這些文件的 指針
代替 實際文件
,而把實際文件存儲在遠程端LFS服務器,同時在本地倉庫中實時追蹤這些文件的變動。
1、下載Git Large File Storage(Git LFS)
2、在您的計算機上,找到下載的文件雙擊安裝
雙擊名為git-lfs-windows-1.XXexe 的文件,其中 1.XX 替換為您下載的 Git LFS 版本。當你打開這個文件時,Windows 會運行一個安裝向導來安裝 Git LFS。
3、打開Git Bash,驗證安裝是否成功
$ git lfs install > Git LFS initialized.
4、將您當前的工作目錄更改為您希望與 Git LFS 一起使用的現有存儲庫
5、要將存儲庫中的文件類型與 Git LFS 關聯,請輸入git lfs track
后跟要自動上傳到 Git LFS 的文件擴展名的名稱
例如,要關聯.psd文件,請輸入以下命令:
$ git lfs track "*.psd" > Adding path *.psd
您想與 Git LFS 關聯的每種文件類型都需要添加git lfs track
. 此命令修改存儲庫的.gitattributes文件並將大文件與 Git LFS 關聯。
提示:我們強烈建議您將本地.gitattributes文件提交到您的存儲庫中。依賴與 Git LFS 關聯的全局.gitattributes文件可能會在為其他 Git 項目做出貢獻時導致沖突。
6、將文件添加到與您關聯的擴展名匹配的存儲庫
$ git add path/to/file.psd
7、提交文件並將其推送到 GitHub
$ git commit -m "add file.psd" $ git push
您應該會看到相關文件上傳的進度信息:
> Sending file.psd > 44.74 MB / 81.04 MB 55.21 % 14s > 64.74 MB / 81.04 MB 79.21 % 3s
參考文章
https://gitee.com/help/articles/4235#article-header0