GitLab远程仓库推送一直处于处理状态无法完成
Git推送至GitLab卡在最后阶段的常见原因
推送进程卡在Total 670 (delta 437), reused 354 (delta 228), pack-reused 0这一步,通常是本地与GitLab服务器的后续交互出现异常,常见原因如下:
- 网络链路问题:推送的最后阶段需要和GitLab完成分支更新校验、对象同步确认等步骤,网络波动、高延迟,或者本地防火墙/代理拦截了Git的通信端口(比如22端口的SSH连接、443的HTTPS连接),都会导致进程挂起。之前重试能成功,说明可能是网络环境出现了持续性的不稳定(比如运营商线路调整、办公网络新增了限制规则)。
- GitLab服务端负载或故障:如果GitLab服务器正处于高负载状态,或者仓库所在的存储节点出现临时故障,服务器无法及时响应推送的收尾请求,就会让本地进程一直等待。这种情况属于服务端问题,可查看内部GitLab监控状态确认。
- Git配置参数不合理:HTTP/HTTPS推送的缓存缓冲区过小,或者超时设置过短,会导致推送包在传输收尾阶段触发超时卡住。可以尝试调整相关配置:
# 增大POST缓存容量 git config --global http.postBuffer 524288000 # 降低网络速度判定阈值,避免误判超时 git config --global http.lowSpeedLimit 0 git config --global http.lowSpeedTime 999999 - 仓库权限与分支限制:如果远程
master分支开启了分支保护(比如需要审批、禁止直接推送),或者你的账号没有该分支的推送权限,推送请求会被服务端拦截,进程看起来像是卡住,实际是在等待权限验证结果。另外,仓库的预接收钩子(pre-receive hook)执行失败也会导致这个问题。 - 本地仓库状态异常:本地仓库的索引、对象数据库损坏,或者存在未解决的隐藏冲突,会导致推送时与远程仓库的校验环节出错。可以执行
git fsck --full检查仓库完整性,或者重新拉取远程分支后再尝试推送:git fetch repo && git rebase repo/master - Git LFS相关问题:如果仓库使用了Git LFS管理大文件,本地未正确同步LFS对象,或者LFS服务器连接异常,会导致推送收尾阶段无法完成文件校验,进程挂起。可以先单独同步LFS对象:
之后再执行常规推送。git lfs push --all repo master
内容的提问来源于stack exchange,提问作者Jimmy A. León
相关产品推荐
相关产品推荐

