expo init创建的React Native项目无法推送到GitHub怎么排查?
Git推送GitHub挂起问题排查与Linux环境解决方案
由于同一仓库在Mac环境可正常推送,可直接排除GitHub端权限、仓库配置、提交内容本身的问题,问题集中在Ubuntu/Linux本地环境,可按以下步骤排查解决:
第一步:定位挂起环节
- 开启Git调试模式执行推送命令,输出完整执行日志判断卡在哪一阶段:
GIT_CURL_VERBOSE=1 GIT_TRACE=1 git push -u origin main
重点观察日志是卡在DNS解析、TCP连接、SSL握手还是数据传输阶段。 - 测试GitHub网络连通性:
执行ping github.com检查是否丢包、延迟过高,执行curl -v https://github.com检查HTTPS请求能否正常得到响应。 - 检查本地Git配置:
执行git config --global --list查看是否存在错误的代理、HTTP版本限制配置。 - 检查待推送文件大小:
确认expo生成的.gitignore已生效,node_modules、.expo等大体积的非必要目录未被提交,执行du -sh ./*可查看当前目录各文件/文件夹大小。
第二步:Linux环境常见问题修复
- 代理配置异常:如果Linux环境之前配置过Git代理,但代理服务未启动、端口失效,会导致HTTPS请求挂起。
解决:先执行git config --global --unset http.proxy、git config --global --unset https.proxy清除Git代理配置后重试;如果确实需要使用代理访问GitHub,确认代理地址、端口、协议类型正确后再重新配置。 - 防火墙/出站规则限制:部分Linux发行版默认的iptables规则、UFW防火墙,或者云服务器的安全组会限制443端口的出站连接。
解决:临时关闭防火墙测试,桌面版Ubuntu可直接在系统设置中关闭,服务器版可执行ufw disable测试,如果推送成功,调整防火墙规则放开443端口出站权限即可。 - DNS解析污染:Linux默认的DNS服务器可能将GitHub解析到不可用的IP地址。
解决:更换系统DNS为公共DNS(如114.114.114.114、8.8.8.8),或者手动在/etc/hosts文件中添加GitHub的可用解析记录。 - HTTPS协议兼容性问题:旧版本Git默认使用的HTTP/1.1协议可能存在握手异常。
解决:执行git config --global http.version HTTP/2切换为HTTP/2协议后重试。 - 换SSH协议推送:HTTPS协议受网络环境影响较大,可生成SSH密钥添加到GitHub账户后,将远程仓库地址切换为SSH格式:
git remote set-url origin git@github.com:BeccaN/my-project.git
SSH协议的推送稳定性远高于HTTPS,可避免大部分网络层面的问题。
内容的提问来源于stack exchange,提问作者BeccaN
相关产品推荐
相关产品推荐

