Windows+VS Code+Git Bash下Github LFS推送PNG遇SSH连接超时报错
可落地的故障解决步骤
1. 对齐LFS上传端点与远程地址
你当前.git/config里的远程是HTTPS地址,但推送时实际走SSH连接22端口,核心原因是LFS的上传端点没有和当前远程配置匹配,自动匹配到了SSH路径。
- 先执行
git lfs env核对当前LFS指向的端点,确认输出中Endpoint项是否和你配置的https://github.com/ryan/restart.git路径一致 - 如果端点不匹配,执行本地配置固定命令:
git config --local lfs.url https://github.com/ryan/restart.git/info/lfs
强制LFS走当前HTTPS远程的上传通道,绕开自动跳转SSH的逻辑。
2. 移除小文件的不必要LFS跟踪
46KB的PNG远低于GitHub普通文件100MB的上传限制,完全不需要走LFS流程,当前触发LFS上传是因为之前的全局跟踪规则把PNG后缀文件全部纳入了LFS管理。
- 先查询当前生效的LFS跟踪规则:
git lfs track - 找到规则列表中匹配
*.png的条目,执行移除跟踪:git lfs untrack "*.png" - 把已经被错误标记为LFS对象的PNG文件从LFS暂存区重置为普通Git文件:
git rm --cached 你要上传的PNG文件的实际路径
重新执行git add .完成暂存
之后执行git lfs ls-files,如果看不到刚才的PNG文件,就说明文件已经脱离LFS管理,不需要再走LFS上传流程。
3. 清理全局URL强制替换残留
之前切换为HTTPS连接后仍然走SSH,大概率是全局配置里残留了URL替换规则,会自动把所有GitHub的HTTPS请求强制转成SSH连接。
- 先执行
git remote -v核对实际生效的远程地址,如果输出仍然是SSH开头的地址,重新执行设置命令:git remote set-url origin https://github.com/ryan/restart.git - 检查并清理全局的URL替换规则,重点删除把HTTPS强制转SSH的配置:
执行git config --global --get-regexp url.*.insteadof查看所有生效的替换规则
对输出中类似url.git@github.com:.insteadof = https://github.com/的规则,执行对应的删除命令:git config --global --unset url."git@github.com:".insteadOf
4. 重新执行推送
- 如果之前已经完成了错误的LFS提交,先执行软重置撤回最近一次提交,保留工作区文件:
git reset --soft HEAD~1 - 重新完成add、commit流程后执行
git push,此时不会再出现LFS对象上传的卡0%进度条,也不会触发22端口的SSH连接超时错误,会直接走HTTPS通道完成小图像文件的上传。
内容的提问来源于stack exchange,提问作者d7l2k4
相关产品推荐
相关产品推荐

