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

GitHub Linux Windows Sublime Text 技術棧 技術棧 2017-10-09

閒扯兩句

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

GitHub對開發者的知名程度也不囉嗦了,稍提兩點:

  • 最流行的開源代碼託管服務(個人認為沒有之一),連 Linux Kernel 都在上面;

  • 是最受歡迎的Git服務(也沒有之一)

  • 幫助文檔詳細而友好;

  • 開源項目可以免費;

  • Issue Tracking和Wiki等工具一應俱全,還能跟代碼提交註釋集成;

  • 大家都用你為什麼不用!!!

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

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

GitHub吉祥物

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

風騷的貼紙

不過在國內訪問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倉庫為例):

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

沒有使用代理時的效果


2.更改.ssh的config文件。Windows下config文件位置在個人用戶目錄的.ssh文件夾下(路徑一般是C:\User\YourUserName\.ssh,這裡把YourUserName換成你自己的用戶名);在macOS/Linux下config文件位置在~/.ssh/目錄下如果沒有.ssh路徑和config文件,可以自己創建。

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

創建和編輯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或者其他域名一併加上,如下所示:

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

編輯好的config文件

寫完保存,Windows下推薦用Sublime Text編輯,如果你是用的vi/vim,記得切換回命令模式並:wq。

3.開始體驗”飛一樣的感覺“,打開shadowsocks和kcptun:

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

測試環境

開始git clone

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

代理後的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選項

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

CLion中的Preferences界面

在Android Studio中也一樣(畢竟基於IntelliJ IDEA)

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

Android Studio中的Preferences界面

相關推薦

推薦中...