GitHub git push超过100MB大文件失败(write error: Broken pipe)完美解决

2024-04-01 21:04

本文主要是介绍GitHub git push超过100MB大文件失败(write error: Broken pipe)完美解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题

  在使用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的文件进行删除​​​​​​​

#查询提交日志,获取提交headgit 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

这篇关于GitHub git push超过100MB大文件失败(write error: Broken pipe)完美解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/868133

相关文章

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

Mysql DATETIME 毫秒坑的解决

《MysqlDATETIME毫秒坑的解决》本文主要介绍了MysqlDATETIME毫秒坑的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 今天写代码突发一个诡异的 bug,代码逻辑大概如下。1. 新增退款单记录boolean save = s

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

Mysql8.0修改配置文件my.ini的坑及解决

《Mysql8.0修改配置文件my.ini的坑及解决》使用记事本直接编辑my.ini文件保存后,可能会导致MySQL无法启动,因为MySQL会以ANSI编码读取该文件,解决方法是使用Notepad++... 目录Myhttp://www.chinasem.cnsql8.0修改配置文件my.ini的坑出现的问题

SpringBoot项目删除Bean或者不加载Bean的问题解决

《SpringBoot项目删除Bean或者不加载Bean的问题解决》文章介绍了在SpringBoot项目中如何使用@ComponentScan注解和自定义过滤器实现不加载某些Bean的方法,本文通过实... 使用@ComponentScan注解中的@ComponentScan.Filter标记不加载。@C

MySQL8.0找不到my.ini如何解决

《MySQL8.0找不到my.ini如何解决》在配置MySQL主从复制时,发现找不到my.ini配置文件,通过检查路径和打开隐藏文件夹,最终在C:ProgramDataMySQLMySQLSer... 目录问题描述解决方法总结问题描述今天在配置mysql主从复制的时候发现,找不到my.ini这个配置文件。

Xshell远程连接失败以及解决方案

《Xshell远程连接失败以及解决方案》本文介绍了在Windows11家庭版和CentOS系统中解决Xshell无法连接远程服务器问题的步骤,在Windows11家庭版中,需要通过设置添加SSH功能并... 目录一.问题描述二.原因分析及解决办法2.1添加ssh功能2.2 在Windows中开启ssh服务2

Mybatis提示Tag name expected的问题及解决

《Mybatis提示Tagnameexpected的问题及解决》MyBatis是一个开源的Java持久层框架,用于将Java对象与数据库表进行映射,它提供了一种简单、灵活的方式来访问数据库,同时也... 目录概念说明MyBATis特点发现问题解决问题第一种方式第二种方式问题总结概念说明MyBatis(原名