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

GitHub提交代码超时解决方案 | 配置SSH连接

前言

众所周知,GitHub是我们程序员在上班或者学习的时候经常会逛的一个地方[手动狗头],而且如果我们想参与开源项目的话,GitHub也是一个很好的平台。

可问题是,提交代码到GitHub总是超时,简直烦死😭😭。

有时候我们在Gitee上看到一个好的开源项目想要参加,但是别人可能只是从GitHub同步到Gitee的,Gitee上的社区完全没人交流,那这种情况下,想参与项目贡献还是得去GitHub才行😖🤐。

为什么我们访问GitHub这么慢呢?引用网上的解释:

GitHub的CDN域名遭到DNS污染,无法使用GitHub的加速分发服务器,而它的服务器又是在国外,所以国内的访问速度就会很慢。

如果你也有这些烦恼,那很高兴你能看到这篇文章,因为它能够帮你解决这个问题,至少能让你流程的提交代码到GitHub🧐。

解决方案

我们要解决的,是使用git bash操作GitHub远程仓库时总是超时的问题,比如拉取代码、提交代码等。

大多数同学可能是使用的http协议创建的远程连接,就是当我们创建远程仓库的时候,使用的是下图里HTTPS的链接:

image-20221024201617015
其实很多朋友都不知道,用SSH协议操作GitHub仓库其实是很流畅的,我已经用了半年了,真的非常流程,不需要开任何科技。

如果不确定自己是否使用的HTTP协议还是SSH协议,可以通过指令git remote -v show来查看:

image-20221024204050847

像我这里同时添加了两个远程仓库,一个是GitHub(用的SSH协议),另一个是Gitee(用的HTTP协议)。


用HTTP协议连接GitHub远程仓库不行吗?

如果是对于国内的Gitee或者自己公司的Git仓库,那我们用HTTP协议作为远程仓库都是可以正常访问的。

但对于GitHub来说,那就不行了。那会让你感觉到什么叫写了代码却提交不上🤣,反复重试也只是不断超时,运气好的时候才能正常操作。

所以我们要使用SSH协议来作为GitHub远程仓库的链接。这样就会很流畅了,非常的流畅,跟用Gitee一样流畅🤣🤣。

下面给大家介绍一下SSH的配置方式,学会了就可以自己去配置啦!

配置SSH

SSH是通过公钥密钥的方式来验证身份的,密钥放在自己电脑上,公钥存到平台上,所以我们配置好之后,就不再需要使用账号密码登录了。而且你在本机生成好密钥之后,可以在多个平台使用,你只需要把公钥存放在多个平台就好了,他们可以通过密钥识别你的身份。

其实配置SSH的教程网上有很多,如果大家看我下面的教程还没明白,可以上百度再搜一些其他的教程学习

1. 检查是否存在sshkey

C:\Users\用户名\.ssh文件夹下可以看到当前电脑的sshkey。

如果有 id_rsa 和 id_rsa.pub 两个文件,就说明已经存在了,可以跳过生成密钥对的步骤,如果找不到目录或者没有这两个文件,则需要先生成。我这里是已经有了的,为了给你们演示,我先把他们删掉😎。

image-20221024210244386

2. 生成密钥对

cmd控制台 上使用如下命令来生成 sshkey:

ssh-keygen -t rsa -C "xxxxx@xxxxx.com"

注意:这里的 xxxxx@xxxxx.com 只是生成的 sshkey 的名称,并不约束或要求具体命名为某个邮箱。
网上的大部分教程均讲解的使用邮箱生成,其一开始的初衷仅仅是为了便于辨识所以使用了邮箱。

输入上面的指令并回车后会弹出一些提示:

  1. 第一次提示保存路径,一般不需要修改,直接回车就行

  2. 第二次提示输入密码短语(等于是sshkey的密码),可以有也可以没有(建议还是设置一下),注意输入密码的时候是不会回显的,这里假设我设置的是 123456

  3. 第三次是重复输入密码

image-20221024211632779

完成三次操作后就生成完毕了,这时候再到.ssh的文件下面去看,能看到你的id_rsa 和 id_rsa.pub 两个文件,就说明你已经生成成功了。

注意这个 id_rsa.pub 是公钥,将来要放到GitHub上的,另一个id_rsa是私钥,等于是你的密码,保存好,不要随便发给别人。

3. 把公钥放到GitHub上

打开GitHub(打不开咋办?那先看下面的访问GitHub网页教程🤣🤣🤣)

  1. 点击头像 -> settings:

    image-20221024211345125

  2. 点击左边 SSH and GPGkeys,再点击右边 New SSH key:

    image-20221024211818148

  3. 写个标题(可以随便写,但建议写主机名),然后把刚刚生成的 id_rsa.pub 里面的内容复制过来,粘贴在下面的 key 那个框里(对没错,直接ctrl A全选复制就行):

    image-20221024212124648

  4. 最后点击 Add SSH key,系统会让你输入GitHub账号的密码,然后就添加完成啦!

4. 测试

我们用刚配置的sshkey拉取一下GitHub上的项目代码试试。

  1. 直接去项目里复制一下ssh的链接:

    image-20221024212657751

  2. 然后到本机找个文件夹打开 Git Bash,输入 git clone 指令:

    image-20221024212816199

  3. 这时候会让你输入密码短语,这个就是我们前面生成密钥的时候设置的东西,我设置的是 123456 ,那么输入密码,回车,就可以看到项目被成功拉取啦!这个密码只有第一次拉取项目的时候会让你输入,后面再进行别的操作就不需要弄了。

    image-20221024212959677

至此,我们的SSH就配置完成啦!学会的朋友可以去试试了,保证你的 clone、pull、push 等操作将会非常流畅🤣🤣

后记

本篇文章讲解了如何流畅的提交代码到GitHub,给出的解决方案是通过配置SSH密钥,如果文章中有任何错误的地方,欢迎各位在评论区指正🥰。

由于CSDN审核的原因,关于访问GitHub网页的解决方案被我删掉了,需要的朋友可以参考这篇文章:https://juejin.cn/post/7158258577113612302


最后,欢迎各位参与我的开源项目校园博客😋,可以试着使用上面教大家的方法来访问项目地址🤣。

  • GitHub地址:https://github.com/stick-i/scblogs

项目的技术栈主要是:

后端 Java + SpringBoot + SpringCloud + Nacos + Getaway + Fegin + MybatisPlus + MySQL + Redis + ES + RabbitMQ + Minio + 七牛云OSS + Jenkins + Docker

前端 Vue2 + ElementUI + Axios

目前项目还有很大改进和完善的空间,欢迎各位有意愿的同学参与项目贡献(尤其前端),一起学习一起进步😋。

相关文章:

  • 火山引擎 RTC 全球化架构设计
  • 软考知识点---13语言处理程序基础
  • 生成keystore以及导出keystore公钥,私钥信息
  • 黑马学SpringCloud-Feign
  • 基于springboot的校园二手网站
  • 对于一个即将上线的网站,如何测试
  • 手把手教你搭建SpringCloudAlibaba之Nacos服务集群配置
  • 【数据分析】多重分形去趋势波动分析附matlab代码
  • Spring Cloud LoadBalancer--负载均衡的原理(源码分析)
  • Prometheus基础概念介绍
  • SDNU_ACM_ICPC_2022_Weekly_Practice_1rd「个人赛」题解
  • 4种数据仓库建模方法
  • 离线数仓 (八) --------- 数仓分层
  • 【JVM技术专题】360度无死角认识volatile机制
  • 深度学习(python)——神经网络(Artificial Neural Networks)激活函数代码
  • 「译」Node.js Streams 基础
  • 【前端学习】-粗谈选择器
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Electron入门介绍
  • Flex布局到底解决了什么问题
  • Java多线程(4):使用线程池执行定时任务
  • jdbc就是这么简单
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • mysql外键的使用
  • Spring-boot 启动时碰到的错误
  • SSH 免密登录
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 解析带emoji和链接的聊天系统消息
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 网络应用优化——时延与带宽
  • 学习JavaScript数据结构与算法 — 树
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • #1014 : Trie树
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (145)光线追踪距离场柔和阴影
  • (4)Elastix图像配准:3D图像
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (八)Flask之app.route装饰器函数的参数
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (六)软件测试分工
  • (十)T检验-第一部分
  • (四)Controller接口控制器详解(三)
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET delegate 委托 、 Event 事件