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環境作演示。
開始
我們先看看正常情況下使用git clone的效果, 不忍直視(以我Fork來的linux倉庫為例):
沒有使用代理時的效果
2.更改.ssh的config文件。 Windows下config檔位置在個人使用者目錄的.ssh資料夾下(路徑一般是C:UserYourUserName.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介面
測試環境
開始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介面