教程:三步教你科学使用GitHub和BitBucket
说两句废话:已经记不清上次写教程是什么时候了,最近无意中发现了简书这个界面简洁,清爽的创作社区,更重要的是支持MarkDown标记语言的创作,忍不住搓搓手,来一篇“Hello World!”小试。如果您喜欢我的简书处女作,请记得赞赏我一杯咖啡!
闲扯两句
Git可能是目前地球上最好用的版本控制系统了(没有之一)。
GitHub对开发者的知名程度也不啰嗦了。稍提两点:
说到吉祥物,顺便刻意秀一下我的贴纸 是不是很风骚?
- 最流行的开源代码托管服务(个人认为没有之一),连 Linux Kernel 都在上面
- 是最受欢迎的Git服务(也没有之一)
- 帮助文档详细而友好
- 开源项目可以免费
- Issue Tracking和Wiki等工具一应俱全,还能跟代码提交注释集成
- 大家都用你为什么不用!!!
- 吉祥物很萌有木有!(敲黑板!) GitHub吉祥物
不过在国内访问GitHub(包括BitBucket)的速度那叫一个惨不忍睹!
尤其是
git clone
的速度那叫一个鬼哭狼嚎!clone的时候下着下着就失败了,家常便饭!
解决方案来了
也可以参考官方文章 [教程:通过代理使用git]
准备
首先你得有科学上网的利器,如shadowsocks
。我个人的配置是shadowsocks
+kcptun
,主要是为了提高科学上网的速度。
至于科学上网,这里不再累赘,有机会可以下次介绍,感兴趣的同学可以参考shadowsocks-go和xtaci
的kcptun。
不过最近水表查得紧,自行斟酌。
测试环境
敲黑板!!!在前面的官方教程链接中阐述了通过http/https
和socks
代理的方式,这里主要讨论通过ssh
通道代理socks
的方式。
经本人验证通过的环境有:
- macOS (Sierra/High Sierra)
- Windows (10 Version 1703)
- Linux (Ubuntu 16.04.3 LTS && CentOS 7_1708)
理论上各个环境无版本号限制,方法是通用的。
因目前手头设备限制,所以用macOS环境作演示。
开始
- 我们先看看正常情况下使用
的效果,不忍直视(以我Fork来的linux仓库为例): 没有使用代理时的效果git clone
- 更改
.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官方也给出了解决方案,但是唯独没有Windows平台的,我这里把官方和我自己在Windows下的解决方案一并列出:
- macOS/Linux
Host github.com User git ProxyCommand nc -x localhost:1080 %h %p
- CentOS 7
Host github.com User git ProxyCommand ssh cmsusr nc %h %p
- Windows
Host github.com User git ProxyCommand connect -S localhost:1080 %h %p
当然如果你需要的话也可以把
编辑好的config文件bitbucket.org
或者其他域名一并加上,如下所示:写完保存,Windows下推荐用Sublime Text编辑,如果你是用的vi/vim,记得切换回命令模式并
:wq
开始git clone 代理后的git clone速度
- 开始体验”飞一样的感觉“
打开shadowsocks
和kcptun
调用写好的bash打开kcptun
由于我写作时的网络环境并不是太好,其实在真实生产环境下速度还可以更快一些。
再提两句:
- 关于http/https协议的git操作
http/https的代理方式需要通过更改
git config --global
的方式实现(其实socks也可以)。由于更改的是global
配置,实际使用过程当中并不太方便和灵活。经过本人测试发现无加速效果(也许是我操作有误吧)。
-
关于可视化界面的客户端(GitHub Desktop/SourceTree)
使用GitHub Desktop和SourceTree客户端进行clone
、pull
、push
等一系列的操作,即使通过本文的加速方式也无效果,也许可视化界面的客户端走的是http/https的协议吧,在上述两款可视化界面客户端的配置里也未发现有任何关于using ssh的选项 -
关于JetBrains
CLion中的Preferences界面
以CLion为例,JetBrains的产品中可以通过设置来提高Version Control功能的速度。
打开Preferences
-Version Control
-GitHub
,勾上Clone git repositories using ssh
选项
在Android Studio中也一样(毕竟基于IntelliJ IDEA)
Android Studio中的Preferences界面