admin管理员组

文章数量:1618705

最近创建了一个新项目,初始化commit、push整个项目都没有问题。有一天突然间代码无法push到远程分支。困扰许久,查阅资料尝试了很多解决方法,归纳如下:

1.缓存过小引起,配置http.postBuffer

配置方式由两种。

第一种全局git配置,使用命令:

git config --global http.postBuffer 524288000

第二种:项目目录下.git文件夹中找到config配置文件,增加如下配置:

[http]
	postBuffer = 524288000
[https]
	postBuffer = 524288000

(此种情况针对文件较大项目有效,其他情况即使postbuffer值再大,也无用)

2.网络抖动引起

取消相关的网络限制,git做如下配置:

git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999

3.nginx代理限制请请求报文大小,修改nginx配置

配置client_max_body_size和client_body_buffer_size

gitlab安装默认会安装nginx做代理服务器,nginx配置文件目录为:/var/opt/gitlab/nginx/conf/gitlab-http.conf.

client_max_body_size:默认 1M,表示 客户端请求服务器最大允许大小,在“Content-Length”请求头中指定.。0 表示不限制大小。

client_body_buffer_size:Nginx分配给请求数据的Buffer大小。

server {
  listen *:9090;


  server_name XXXX;
  server_tokens off; 

  client_body_buffer_size 512k;
  client_max_body_size 0;
  ignore_invalid_headers off;
  proxy_buffer_size 128k;
  proxy_buffers 32 64k;
  proxy_busy_buffers_size 128k;
  proxy_temp_file_write_size 512k;

  ...
}

(此种方法仍然没有解决我的问题)

4.超大文件使用lfs提交

超大文件可采用此种方式提交。但lfs需要慎用,取消lfs很麻烦。当时我认真的检查了我的代码,并不存在大文件或者超大文件,但抱着一试的心态还是使用lfs提交。使用方法如下:

> git lfs install ##安装lfs
> git lfs track "*.osi" ##追踪大文件,示例中以osi未结尾的文件
> git add .gitattributes

设置完成后按照正常方式提交即可。切记如果项目文件不是很大,谨慎使用lfs,可以使用lfs的替代方案。

4.压缩级别和压缩速率引起,修改用户目录下.gitconfig配置文件

corepression用来设置压缩级别。0表示无压缩,-1为zlib默认压缩值,而1-9是速度大小集中的方案,最慢的是9。

[core]
	compression = 1
[https]
	postBuffer = 524288000

我的配置最初为-1,修改为1后成功push。

注:git配置文件优先级

–global 全局配置文件 ,配置文件位置:~/.gitconfig,优先级中
–system 系统配置文件,配置文件位置:$(prefix)/etc/gitconfig,优先级低
–local 特定配置文件,配置文件位置:$(git项目目录)/.git/config,优先级高

本文标签: 报错代码RPCfailedpush