当前位置: 首页 > news >正文

Git推送从失败到成功的解决方案

问题描述

今天在尝试将本地代码推送到GitHub远程仓库时,遇到了推送失败的问题。使用git push命令后,出现了以下错误:

fatal: unable to access 'https://github.com/guchen66/IT.Tangdao.Core.git/': OpenSSL SSL_read: Connection was reset, errno 10054

尝试再次推送时,又遇到了超时错误:

fatal: unable to access 'https://github.com/guchen66/IT.Tangdao.Core.git/': Failed to connect to github.com port 443 after 21023 ms: Timed out

排查过程

  1. 检查本地仓库状态
    首先使用git status命令检查本地仓库状态,确认是否有未提交的更改:

    On branch master
    Your branch is ahead of 'origin/master' by 1 commit.(use "git push" to publish your local commits)nothing to commit, working tree clean
    

    结果显示本地分支比远程超前1个提交,工作树干净,没有未提交的更改。

  2. 检查远程仓库配置
    使用git remote -v命令检查远程仓库配置:

    origin  https://github.com/guchen66/IT.Tangdao.Core.git (fetch)
    origin  https://github.com/guchen66/IT.Tangdao.Core.git (push)
    

    远程仓库配置正确,但使用的是HTTPS协议。

  3. 检查SSH密钥配置
    检查本地是否配置了SSH密钥:

    Get-ChildItem -Path $env:USERPROFILE\.ssh -ErrorAction SilentlyContinue
    

    结果显示本地已配置SSH密钥,这为我们切换到SSH协议推送提供了条件。

解决方案

切换到SSH协议推送

HTTPS协议推送失败通常是由于网络问题、防火墙限制或SSL证书问题导致的。而SSH协议通常具有更好的穿透性,不容易受到这些问题的影响。

  1. 修改远程仓库URL为SSH格式

    使用git remote set-url命令将远程仓库URL从HTTPS格式切换为SSH格式:

    git remote set-url origin git@github.com:guchen66/IT.Tangdao.Core.git
    

    SSH格式的URL通常以git@github.com:开头,而不是https://github.com/

  2. 再次尝试推送

    修改远程仓库URL后,再次使用git push命令尝试推送:

    git push
    

    这次推送成功了!输出结果如下:

    Enumerating objects: 15, done.
    Counting objects: 100% (15/15), done.
    Delta compression using up to 16 threads
    Compressing objects: 100% (8/8), done.
    Writing objects: 100% (8/8), 999 bytes | 999.00 KiB/s, done.
    Total 8 (delta 7), reused 0 (delta 0), pack-reused 0
    remote: Resolving deltas: 100% (7/7), completed with 7 local objects.
    To github.com:guchen66/IT.Tangdao.Core.git12fa65d..6c5a273  master -> master
    

总结

  1. 问题原因:HTTPS协议推送时遇到网络连接问题(SSL连接重置和超时)
  2. 解决方案:将远程仓库URL从HTTPS格式切换为SSH格式
  3. 最终结果:成功将本地代码推送到GitHub远程仓库

小贴士

  • 如果你经常遇到HTTPS推送问题,建议考虑使用SSH协议进行Git操作
  • SSH协议需要提前配置SSH密钥对,但配置一次后可以长期使用
  • 确保你的SSH公钥已经添加到GitHub账户中
  • 定期检查Git远程仓库配置,确保使用合适的协议

注意事项

  • 本文不包含任何密钥、密码等敏感信息
  • 所有命令和输出都经过脱敏处理,仅用于技术分享
  • 在实际操作中,请妥善保管你的SSH密钥和其他敏感信息

通过以上步骤,我成功解决了Git推送失败的问题,希望这篇文章能帮助到遇到类似问题的开发者!

http://www.jsqmd.com/news/60063/

相关文章:

  • Microsoft-Store-error
  • STM32 HAL库 硬件IIC 从机一些问题整理(转载)
  • 本地人推荐的火锅,天台火锅/麻辣火锅/老火锅/市井火锅/川渝火锅约会地点推荐榜单
  • OBDSTAR P003+ Kit for DC706 Tablets: Simplify ECU, EEPROM, Flash IMMO Data Diagnostics Programming
  • 全程复盘:一次枚举值永远 Cloud2的坑——从玄学随机到只读属性
  • M726芯片
  • Fast Easy Electric Oil Siphon Pump: Professional Fluid Transfer for Cars, Motorcycles Boats
  • AutoCloseable接口 try-with-resources 、 try-catch-finally
  • 第44天(中等题 数据结构)
  • rizhi
  • element-plus el-select
  • centos6.9编译安装python37——SSL 模块缺失、GCOV 链接错误,以及 Bash 命令缓存混乱
  • 在 Windows 上本地部署 ComfyUI + zImage Turbo 模型(低显存友好)
  • sg.取消按钮焦点框
  • 代码随想录Day27_贪心1
  • Day10-20251203
  • 面向人机文明的价值协同:理论、实践与评估的完整框架
  • 251203 完成比完美重要
  • python调用大模型api来进行对话
  • 主流玩家的高端主板!七彩虹战斧B850M超级黑刃主板评测:供电散热配置豪华 性价比极佳
  • 6.4 基于线弹性断裂力学(LEFM)的断裂参数
  • expdp dmp 导出不完整导入ORA-39059 ORA-39246 故障抢救数据
  • 基于 Node.js 与 Tesseract.js 的验证码识别系统设计与实现
  • 用 Rust 和 Leptess 构建轻量级验证码识别工具
  • 12.2 HTML
  • WIN11系统环境松灵机器人SCOUT2.0底盘CAN通信控制测试
  • 软工团队作业4
  • 使用Frp+Caddy把https映射到内网的web服务
  • 刷题日记—前缀和
  • 第五十四篇