一、问题分析

背景: 在本地修改了大量的代码并commit后,最后一次性push时,出现错误。
分析: 从报错的信息来看,貌似是和远程Git连接出现了问题,因此,可以从以下三个角度来分析:

  1. 本地和远程Git仓库连接有问题,由于刚提交成功过,可以排除掉;
  2. 本地和远程Git仓库的数据传输速度慢,在commit中数据过大情况下,会导致连接超时,这是有可能的;
  3. 本地的commit内容比较多,无法一次性将内容push上去,是有可能。

通过去Git官网查询可知, 以下参数可以解决数据传输大小和速度等问题:

http.postBuffer: 指定在Git发送HTTP请求时使用的缓冲区大小
http.lowSpeedLimit: 设置Git在进行HTTP传输时的最低传输速度限制
http.lowSpeedTime:设置Git在进行HTTP传输时的最低传输时间限制

二、解决方案

以下所有操作均在IDEA的终端Terminal上进行。

2.1 调整缓冲区的大小

第一种方式: 直接在IDEA终端内进行:

git config --global http.postBuffer 1024288000【单位:字节】
git config http.postBuffer 1024288000【单位字节】
其中--global表示对当前用户的所有Git仓库都适用; 否则,仅对当前用户的当前Git仓库适用

image.png
使用java git config --list 命令查看具体的配置情况为:使用:wq退出命令

image.png

第二种方式: 直接去当前项目下的.git文件夹中找到config文件进行修改。

[remote "origin"]
	url = https://gitlab05.dtdream.com/IDST/DTInsight/TagsStudio/TagsStudio.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
	remote = origin
	merge = refs/heads/master
[http]
	sslVerify = false
	postBuffer = 1024288000 --直接修改

image.png

修改完之后,重新进行push,如果还失败,可以考虑加大postBuffer。如果还不行,考虑下面的方案

2.2 调整传输速度和时间的大小

git config --global http.lowSpeedTime 999999 【单位:秒】:设置为999999秒意味着几乎没有时间限制
git config --global http.lowSpeedLimit 0:设置为0表示没有速度限制

其中java--global表示对所有的Git仓库都起作用,最后重新推送。

2.3 撤销commit改为批量循环commit+push

IDEA中有个undo commit按钮, 选择当前的大commit进行undo(回滚),会将commit的内容重新放回到暂存区【**注意:**以前要提前拷贝个分支,防止误操作,导致修改的内容丢失】

image.png

三、总结

  1. 从报错信息入手,大胆猜测,多上网查看解决方案;
  2. 提前做好数据的备份,防止解决的过程中造成数据丢失。
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐