在Terminal中通過代理訪問GitHub(解決訪問GitHub速度慢的問題)

REIVAX5013發表於2020-12-02

在Terminal中通過代理訪問GitHub

從國內訪問GitHub速度慢是一個困擾大家很久的問題,使用代理可以提高網頁瀏覽和下載ZIP檔案的速度。但是在Terminal中,git工具在訪問github.com時,是不會經過代理的,這就導致了執行clonefetchpull等命令時,傳輸速度只有可憐的10KiB/s。

如果使用代理之後網頁載入速度還是很慢,有可能是沒有開啟代理的 全域性模式(Global Mode)。因為GitHub在國內沒有被封鎖,只是被限速了,所以有的代理會“智慧”地忽略對github.com的訪問請求。

論壇上常見解決方法是更改/etc/hosts檔案,但這個方法成功率不是很高,而且因為IP地址變動的問題,每次都要重新配置。還有一個方法是通過gitee.com來中轉倉庫,但是這隻適合用於一次性的克隆,如果要經常獲取別人的提交,這種方法就過於繁瑣了。

下面我就來講解一下怎麼讓git工具通過代理訪問github.com

第一步:配置代理

從代理客戶端設定中找到 允許其他裝置連線本機代理 選項,並輸入一個代理埠:

image

注意:

  • 每個代理的設定介面可能不一樣,但是應該都有這些選項。
  • 0~1023埠為系統埠,所以這裡選擇1024~65535之間的埠。
  • 如果有SOCKS5協議,也可以選擇一個埠使用。

第二部:配置git工具

設定git區域性代理

如果你想在本地已有的倉庫中,讓fetch或者pull命令經過代理,就需要將git工具的代理設定為上一步中輸入的埠(我的埠是41091):

$ cd path/to/your/repo/
$ git config http.proxy http://127.0.0.1:41091
$ git config https.proxy https://127.0.0.1:41091
$ git config --list # 檢視設定結果

注意:

  • 這裡使用的是git工具的 區域性代理(沒有--global標示),所以僅該目錄下的git命令會經過代理。
  • 127.0.0.1是localhost的IP地址,如果你的代理不在同一個計算機上,就需要輸入對應的IP地址。
  • 如果上一步選擇了SOCKS5協議,使用以下命令:
$ git config http.proxy socks5://127.0.0.1:1090
$ git config https.proxy socks5://127.0.0.1:1090
  • 如果想要停用代理,輸入以下命令:
$ git config --unset http.proxy
$ git config --unset https.proxy

設定git全域性代理

如果你想讓clone命令經過代理,首先需要設定git工具的 全域性代理

$ git config --global http.proxy http://127.0.0.1:41091
$ git config --global https.proxy https://127.0.0.1:41091

clone完成之後,記得停用全域性代理,否則之後所有的git命令都會經過代理:

$ git config --global --unset http.proxy
$ git config --global --unset https.proxy

如果想要在克隆的資料夾中開啟區域性代理,可以參照第一種情況。

第三部:訪問GitHub

現在就可以用代理的最高限速訪問github.com啦!我在測試中,git pull的平均速度可以達到10MiB/s。

image

相關文章