Git Push无限挂起如何诊断?已尝试多种方案仍未解决
诊断Git Push无限挂起的调试方法
1. 启用Git内置调试追踪
通过设置Git环境变量,获取推送过程的详细内部操作日志:
- 基础流程追踪:
GIT_TRACE=1 git push,输出Git执行的每一步命令和关键流程节点 - 数据包交互追踪:
GIT_TRACE_PACKET=1 git push,显示与远程仓库的所有网络数据包交互,包括推送完成后的会话细节 - 全量操作追踪:
GIT_TRACE_ALL=1 git push,输出Git内部所有操作的完整日志,适合深度定位卡住的环节
2. 针对传输协议的专项排查
根据你使用的GitHub访问协议(SSH/HTTPS),分别执行对应命令:
- SSH协议:测试SSH连接的完整交互:
ssh -vT git@github.com,检查认证完成后是否出现会话挂起,这可能是推送后SSH通道未正常关闭导致的 - HTTPS协议:启用curl verbose日志:
GIT_CURL_VERBOSE=1 git push,查看HTTPS请求的完整流程,包括服务器响应后的后续操作
3. 简化测试场景定位问题
- 推送空提交:
git commit --allow-empty -m "debug test push",执行推送,排除因提交内容导致的远程处理异常 - 明确指定远程分支:
git push origin <你的分支名>,避免默认分支设置带来的额外逻辑干扰
4. WSL环境特定检查
- 检查代理配置:执行
echo $HTTP_PROXY $HTTPS_PROXY,确认是否存在错误的代理设置导致网络挂起 - 跨环境对比测试:在Windows原生Git环境中克隆仓库并推送,验证是否为WSL环境特有的问题
内容的提问来源于stack exchange,提问作者evanjdooner
相关产品推荐
相关产品推荐

