我一直在云服务器上搭建git服务并且使用没有问题,今天早上在公司克隆昨天晚上在家上传的文件的时候突然出现了报错:

guage-bash
  • 01
  • 02
  • 03
warning: redirecting to https://gitea.huangyanjie.com/lenn/ffmpeg-base-learn.git/ error: RPC failed; curl 18 transfer closed with outstanding read data remaining fatal: the remote end hung up unexpectedly

以前从来没遇到这个问题,我首先想到的就是文件大小问题,因为这个仓库会比较大一些,他里面有音视频文件,deepseek的回答可能是以下几方面:

  1. 本地git缓存buffer不够大
  2. 网络超时
  3. 仓库过大

我首先调整了本地仓库:

guage-bash
  • 01
  • 02
  • 03
  • 04
git config --global http.postBuffer 2097152000 # 缓存设为2GB git config --global core.compression 9 # 最高压缩级别 git config --global http.lowSpeedTime 999999 # 超时时间(秒) git config --global http.lowSpeedLimit 0 # 最低传输速度限制(0=禁用)

没有效果!

我第二步修改了我使用的gitserver的配置文件,添加/修改如下内容:

guage-bash
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
[server] HTTP_CLIENT_TIMEOUT = 7200 ; 超时时间(秒,默认可能仅60秒) PROTOCOL_TIMEOUT = 7200 ; Git协议超时(Gogs特有) [git] MAX_GIT_DIFF_LINES = 0 ; 禁用差异行数限制(0=无限制) MAX_GIT_DIFF_FILES = 0 ; 禁用差异文件数限制 ENABLE_GIT_COMPRESSION = true ; 启用压缩减少传输量 TIMEOUT = 7200 ; Git命令执行超时

依然没有效果过,那最后我只能修改Nginx配置文件了,修改/增加如下:

guage-nginx
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
# 在gogs部分修改 location / { proxy_read_timeout 7200s; proxy_send_timeout 7200s; # 禁用缓冲,用来传输大文件 proxy_request_buffering off; # 取消上传大小限制 client_max_body_size 0; }

其实网络超时相关的配置是deepseek推荐加上的,因为我的服务器都是香港CN2回国(延迟在40ms左右),不可能超时。所以还是文件大小控制的问题。