无法从Eclipse推送至TFS Git仓库,但命令行可正常操作
解决Eclipse推送TFS Git仓库超时报错的问题
我之前碰到过几乎一模一样的情况,命令行Git操作一切正常,但Eclipse里push就超时报Short read of block.错误,给你几个亲测有效的排查和解决方向:
让Eclipse使用系统的SSH客户端
Eclipse默认可能用内置的JSch SSH实现,和系统Git的SSH环境存在兼容性差异。你可以手动指定Eclipse调用系统的SSH:- 打开
Window > Preferences > Team > Git > Configuration - 点击
New Entry,添加键为ssh.command,值为你的系统Git SSH路径(比如Windows下是C:\Program Files\Git\usr\bin\ssh.exe,macOS/Linux是/usr/bin/ssh) - 应用设置后重启Eclipse再尝试推送
- 打开
延长Eclipse的Git连接超时时间
默认的5分钟超时可能不够应对大提交或者网络波动:- 进入
Window > Preferences > Team > Git > Remote - 把
Connection timeout (seconds)的值从300调高到600甚至1200,保存后重试推送
- 进入
重置Eclipse与仓库的关联
有时候本地仓库的缓存配置会出问题:- 右键项目选择
Team > Disconnect,确认后再右键项目Team > Share Project重新关联到你的TFS Git仓库 - 也可以尝试右键项目
Team > Reset > Hard Reset(注意:这个操作会丢弃所有未提交的本地修改,一定要先备份重要内容),之后再推送已提交的内容
- 右键项目选择
检查提交是否包含大文件
如果你的提交里有大文件,Eclipse的推送逻辑可能比命令行更容易触发超时。可以在Git Bash里执行以下命令找出仓库里的大文件:
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -10 | awk '{print$1}')"
如果发现大文件,考虑拆分提交或者使用Git LFS来管理大文件后再尝试推送
内容的提问来源于stack exchange,提问作者Sam Jones
相关产品推荐
相关产品推荐

