编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

教程:使用GitHub和BitBucket的正确姿势

wxchong 2024-08-03 02:43:40 开源技术 31 ℃ 0 评论

闲扯两句

Git可能是目前地球上最好用的版本控制系统了(没有之一)。

GitHub对开发者的知名程度也不啰嗦了,稍提两点:

  • 最流行的开源代码托管服务(个人认为没有之一),连 Linux Kernel 都在上面;

  • 是最受欢迎的Git服务(也没有之一)

  • 帮助文档详细而友好;

  • 开源项目可以免费;

  • Issue Tracking和Wiki等工具一应俱全,还能跟代码提交注释集成;

  • 大家都用你为什么不用!!!

  • 吉祥物很萌有木有!(敲黑板!)。

GitHub吉祥物

风骚的贴纸

不过在国内访问GitHub(包括BitBucket)的速度那叫一个惨不忍睹!

尤其git clone的速度那叫一个鬼哭狼嚎!clone的时候下着下着就失败了,家常便饭!

解决方案

  • 准备

shadowsocks等,我个人的配置是shadowsocks + kcptun,主要是为了速度。

至于science上网,这里不再累赘,有机会可以下次介绍,感兴趣的同学可以参考shadowsocks-go和xtaci的kcptun。

不过最近水表查得紧,自行斟酌。

  • 测试环境

这里主要讨论通过ssh通道代理socks的方式。

经本人验证通过的环境有:

  • macOS (Sierra/High Sierra)

  • Windows (10 Version 1703)

  • Linux (Ubuntu 16.04.3 LTS && CentOS 7_1708)

理论上各个环境无版本号限制,方法是通用的。

因目前手头设备限制,所以用macOS环境作演示。

  • 开始

  1. 我们先看看正常情况下使用git clone的效果,不忍直视(以我Fork来的linux仓库为例):

没有使用代理时的效果


2.更改.ssh的config文件。Windows下config文件位置在个人用户目录的.ssh文件夹下(路径一般是C:\User\YourUserName\.ssh,这里把YourUserName换成你自己的用户名);在macOS/Linux下config文件位置在~/.ssh/目录下如果没有.ssh路径和config文件,可以自己创建。

创建和编辑config文件

在config文件中写下:

Host github.com
 User git
 ProxyCommand nc -x localhost:1080 %h %p

这里github.com是你clone时需要走代理的Host主机域名或IP地址,User一般都是git(哪怕是我们自己搭建的git托管服务器一般情况下,也是以git作为用户名)。重点来了:ProxyCommand会根据操作系统和你代理配置的不同而不一样,例如Windows下是没有nc命令的。localhost是我本地代理的地址,你可以替换为你自己的代理服务器地址。1080是我本地代理设置监听的端口号,你可以替换为你自己设置的。针对不同操作系统下不同的ProxyCommand写法,git官方也给出了解决方案,在此就不细谈了。


当然如果你需要的话也可以把bitbucket.org或者其他域名一并加上,如下所示:

编辑好的config文件

写完保存,Windows下推荐用Sublime Text编辑,如果你是用的vi/vim,记得切换回命令模式并:wq。

3.开始体验”飞一样的感觉“,打开shadowsocks和kcptun:

测试环境

开始git clone

代理后的git clone速度

由于我写作时的网络环境并不是太好,其实在真实生产环境下速度还可以更快一些。

再提两句:

  • 关于可视化界面的客户端(GitHub Desktop/SourceTree)

    使用GitHub Desktop和SourceTree客户端进行clone、pull、push等一系列的操作,即使通过本文的加速方式也无效果,也许可视化界面的客户端走的是http/https的协议吧,在上述两款可视化界面客户端的配置里也未发现有任何关于using ssh的选项。

  • 关于JetBrains

    以CLion为例,JetBrains的产品中可以通过设置来提高Version Control功能的速度:

    打开Preferences-Version Control-GitHub,勾上Clone git repositories using ssh选项

CLion中的Preferences界面

在Android Studio中也一样(毕竟基于IntelliJ IDEA)

Android Studio中的Preferences界面

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表