问题
在使用git push推送大文件(超过了100MB)到GitHub远程仓库时提示异常,异常信息如下:
fatal: sha1 file '<stdout>' write error: Broken pipe
fatal: the remote end hung up unexpectedly
通过查阅了一些资料,我发现是因为GitHub对提交的文件大小做了限制,GitHub会阻止超过100 MB的推送(单文件),检查了一下我提交的文件中有一个超过200MB的文件。
GitHub官方说明👉
解决方案一
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)
Git LFS Windows Installer
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://docs.github.com/en/repositories/working-with-files/managing-large-files/installing-git-large-file-storage
https://gitee.com/help/articles/4235#article-header0