VSCode远程WSL环境下Git push/pull操作无响应挂死如何解决
可行解决方案
排查凭证配置问题
Git使用HTTPS协议和远程仓库交互时需要读取/写入凭证,如果未正确配置凭证助手,会卡在静默等待凭证输入的状态,表现为无响应挂死。执行git config --global credential.helper检查配置,如果你Windows侧安装了Git Credential Manager,可在WSL中执行如下命令配置共享Windows侧的凭证:git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager.exe"排查网络链路问题
- 先检查Git代理配置,执行
git config --global --get http.proxy、git config --global --get https.proxy查看是否有配置错误的代理,可先临时清空代理测试:
git config --global --unset http.proxy git config --global --unset https.proxy
- WSL2存在默认MTU不匹配导致TCP连接卡顿的已知问题,可临时调小MTU验证:
sudo ip link set dev eth0 mtu 1400
如果调整后操作恢复正常,可将该命令写入WSL启动配置永久生效。 - 可开启Git调试日志确认卡顿节点:
GIT_CURL_VERBOSE=1 git pull,根据输出的交互日志判断是卡在DNS解析、SSL握手还是数据传输阶段,针对性排查。
- 升级Git版本
你当前使用的2.25.1是较老旧的版本,存在多个已知的HTTPS远程交互兼容性bug,可通过Git官方PPA升级到最新稳定版:
sudo add-apt-repository ppa:git-core/ppa sudo apt update sudo apt install git
排查VSCode远程终端干扰
如果仅在VSCode的远程WSL终端中执行命令会挂死,可先打开原生WSL终端执行相同操作验证:- 若原生终端正常,说明是VSCode的终端凭证拦截逻辑导致,可在VSCode设置中关闭
git.terminalAuthentication选项,重启远程连接后重试。 - 若原生终端同样挂死,排除VSCode侧影响,聚焦前面的WSL系统侧问题排查。
- 若原生终端正常,说明是VSCode的终端凭证拦截逻辑导致,可在VSCode设置中关闭
协议替换验证
可临时将远程仓库地址切换为SSH协议测试:git remote set-url origin git@github.com:<你的用户名>/<你的仓库名>.git,配置好SSH公钥后执行pull/push,如果操作正常可确认是HTTPS链路问题,优先排查前面的凭证、代理相关配置。
内容的提问来源于stack exchange,提问作者Diede
相关产品推荐
相关产品推荐

