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_name
和your_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
本文作者原创,未经许可不得转载,谢谢配合