您的位置:首頁>正文

教程:使用GitHub和BitBucket的正確姿勢

閒扯兩句

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介面

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示