专栏首页程序员修炼之路git惨案—提交文件过大导致RPC failed,413 Request Entity Too Large错误

git惨案—提交文件过大导致RPC failed,413 Request Entity Too Large错误

git 提交失败

今天git push的时候碰到个奇怪的问题,push的进度卡在25%,最后提交失败,报上述图片中的错误。看提交的过程日志发现竟然有1个多G的内容要提交!而正常的情况下一般几秒钟就OK了,而且我也没有改动几个文件呀?!

git正常提交

上图是正常的情况,可以看到实际上只有几KB,嗖的一下就好了

问题解决过程

上网找来找去,发现推送文件过大,提交失败,是因为采用Http推送,服务器的nginx会有最大文件的限制。网上一般是2种解决方法:

方法一:切换成ssh提交

  • 首先用git remote -v命令查看远程的仓库地址是否是http开头的
  • 如果是,那就切换为ssh开头的链接,命令为:git remote set-url origin ssh链接

方法二:设置git http提交的大小

一行命令搞定:git config http.postBuffer 524288000

而实际上,第一种方法我试了,切换为ssh提交以后还是很慢,我懒得等,就想别的方法了。

对于第二种方法,我查看了git的默认配置,里面并没有http.postBuffer这一项,而且大家一般也不会主动去配置这个参数,所以这种方法肯定是非常规方法。

个人认为,对于我的情况,以上2种都是治标不治本。问题的关键在于为什么我有这么大的文件需要提交?!

最后通过一个个查找最近的commit,发现之前的一个commit中有一个之前没见过的文件java_pid52529.hprof

而这个文件有1.5G!所以这才是罪魁祸首!

解决步骤:

  1. 首先就是回滚到有问题的那次提交,注意这里的回滚当然不能丢掉我们已经改动过的代码 //用下面的命令可以回滚commit和add命令 git reset --mixed HEAD^ 上面的命令会回滚最近的一次commit和add操作,但是改动的代码仍然再,相当于是要重新提交。如果出问题的是之前的某次commit,那就多执行几次上面的命令。
  2. 回滚到有问题的那次commit之后,删除掉有问题的文件,然后重新提交 //删除文件 rm java_pid52529.hprof //然后重新提交 git add . git commit -m "重新提交"

通过以上就能根本上解决问题了。

总结

一般情况下,我们提交git是不会碰到这个问题,特别是之前是正常的,突然之间提交文件变成几百兆,可以看看是不是提交了不该提交的文件。

java_pid52529.hprof 这个文件看这个后缀hprof,应该是内存快照,我们在分析是否有内存泄漏时一般都会用IDE工具截取一段APP的内存记录,生成这个hprof文件,然后进行分析。

如果对你有帮助,给个“好看”呗~

本文分享自微信公众号 - AntDream(gh_267204a81a96)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 常用 Git 命令清单

    一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。

    qubianzhong
  • 提高模型性能,你可以尝试这几招...

    在EZDL到底怎样,试试看…一文中,我尝试了百度推出的在线人工智能设计平台EZDL,其愿景是任何人不用编写一行代码就可以轻松地构建、设计和部署人工智能(AI)模...

    云水木石
  • Android 必知必会 - 根据包名判断 App 运行状态

    对于没有 Service 的 App,程序一旦切换到后台,可能很快就被回收了,这里使用 ActivityManager.getRunningTasks(int ...

    他叫自己MR.张
  • 1 分钟小技巧系列 | 如何快速制作一个易读的 Git 版本号

    以前在使用 CSV、SVN 等版本管理软件时,这些版本管理软件都有提供版本编号可以查看。我们由版本编号就可以判断一个文件的新旧,这个特性在 Git 上就有些不...

    iMike
  • Android 项目开发填坑记 - 获取系统语言(兼容7.0)

    获取系统当前语言是一个比较常用的功能,在 Android 7.0 系统上旧函数获取到的当前系统语言并不正确,或者说从 Android 7.0 起,Android...

    他叫自己MR.张
  • 为了考PMP,我做了一个刷题小程序

    1.我是一名软件工程师,技术出身,担任开发组长,对项目管理不是很熟,所以决定系统学习下项目管理。

    Jackson0714
  • LeetCode-18 四数之和

    今天我们学习第18题四数之和,这是一道中等题。像这样数组的题目经常作为面试题来考察面试者算法能力和写代码能力,因此最好能手写出该题。下面我们看看这道题的...

    用户3470542
  • git 回滚到指定版本并推送到远程分支

    qubianzhong
  • 基于Servlet的3.1以上注解方式完成上传功能。

    注意:这里采用的是servlet的注解方式,即要求在Servlet3.1版本以上。另,Tomcat7.0版本以上

    杨校
  • Android反编译 -- 错误代码还原

    反编译的代码中会有很多setColor(int)的情况,比如setColor(-16777216),这个值比较特别,能轻易的查到Android文档中对这个整数的...

    他叫自己MR.张

扫码关注云+社区

领取腾讯云代金券