记一种新的Github提交、下载代码方式(SSH)

Sep 22,2022   2142 words   8 min

Tags: Others

1. 背景

做科研写代码,难免要和Github打交道,尽管有所谓的Gitee、Gitlab替代品,但现阶段绝大多数最新的代码依然还是发布在Github上。但国内的网络环境一言难尽,动不动就无法打开此网页、连接被拒绝等等,严重阻碍了我们的科研进展。 如果说只是访问不了网页影响倒还没那么大。之前至少还能正常clone、push代码。一天可能有一次无阻碍push的机会,之后再怎么push都很费劲。但是现在就连这一天一次的机会也没有了。无论是用校园网还是手机流量开热点,push代码都是443错误,简直无奈。 一般而言,我们都是通过复制https://github.com/xxx/xxx.git,然后利用git clone命令下载代码,如下所示。 这样当然没问题,有问题的就是你下不下来。网上找了很多办法,大都是改host、科学上网,以及玄学的开热点、凌晨操作等等。以前有时还有效果,现在也是全都不行了。所以,为了解决这个问题,在网上找了很久,无意之间发现了Github新的提交、下载代码的方式——SSH。经过测试,这个方式提交速度很快,也没有被刻意阻碍(以后怎么样不知道),算是传统https方式的替代。本篇博客就简单对这种方式进行记录。

2. 具体步骤

2.1 检查git config配置情况

打开Git Bash终端,在其中输入git config --global --list,即可查看本机上的相关配置信息,如下。 顺利的话就能看到你的Github邮箱和用户名。如果没有的话就分别输入下面的命令进行添加。

git config --global user.name your_name
git config --global user.email your_email

将上面的your_nameyour_email替换成你自己的即可。

2.2 新建SSH Key

打开Git Bash终端,输入如下内容。

cd ~
ssh-keygen -t rsa

默认一路回车即可。这样,SSH Key就生成好了。 我们找到生成的id_rsa.pub文件并打开,复制其全部内容,如下。

2.3 Github账户配置

在Github中依次点击你的头像→Settings→SSH and GPG keys,界面如下。 然后点击New SSH Key。把刚刚我们复制的Key粘贴进来,并起个别名,点击Add SSH Key即可(可能需要输入账户密码确认)。 添加好以后,应该就能在页面中看到刚刚添加的Key了。 同时,你也应该会收到一封来自Github的邮件,提醒你有新的Key被添加了。

2.4 测试SSH

最后,我们打开Git Bash,在其中输入:

ssh -T git@github.com

你可能会遇到如下问题: 提醒你输入密码,可是你并不知道密码是什么,因为你从来没设置过密码。解决办法是在刚刚我们生成Key的文件夹下,手动新建一个config文件,并输入如下内容保存。

Host github.com
identityFile ~/.ssh/id_rsa
Host github.com
Hostname ssh.github.com
Port 443
User git

再次执行前面的步骤,就应该可以了,如下所示。 可以看到,我们顺利连接到了Github的网站,没有受到任何阻碍。

3. 实际测试

这里,我们以我自己的ROS-Bag-Tools这个仓库为例进行演示,仓库地址是这里

3.1 代码下载

我们还是点击网页中的Code,只是这个时候不一样的是,我们选择SSH,然后复制SSH地址。 然后,我们在本地打开Git Bash终端,还是和以前一样,输入git clone

git clone git@github.com:zhaoxuhui/ROS-Bag-Tools.git

不出意外,很快就可以下载好了(非常丝滑),如下。

3.2 代码提交

假设我们对上述代码进行了修改,要重新push上Github。其实也非常简单了,常规命令即可。

git add .
git commit -m"push"
git push

如下图所示。 不需要反复重试!不需要漫长的等待!没有恶心人的错误!只有一发即中爽快。另外提一句,本篇博客就是用SSH的方式提交的。

4. 结语

不得不吐槽一下,很多时候在国内做科研真的很难,要面临很多不必要的烦恼和麻烦:Github用不了,pip下载卡的想砸电脑,ROS安装死活更新不了依赖…全部都是网络问题导致的。祈祷有一天可以不再被这些问题所困扰吧。

5. 参考资料

  • [1] https://blog.csdn.net/jiaming917/article/details/123419756
  • [2] https://blog.csdn.net/WU2629409421perfect/article/details/112306305
  • [3] https://blog.csdn.net/li4692625/article/details/120307465
  • [4] https://blog.csdn.net/weixin_48349367/article/details/120056192

本文作者原创,未经许可不得转载,谢谢配合

返回顶部