git clone一個github上的倉庫,太慢,經常連接失敗,但是github官網流暢訪問,為什麼?

git clone一個github上的倉庫,太慢,經常連接失敗。但是,在官網上download zip還是挺快的。已經使用代理,訪問google、github官網都很流暢。 因為,很是費解。為啥git clone就很慢。急求指教!


上述都說的很全面了 我總結和補充一下

1.首先第一步前提是已經打開了SS代理。

2.如果要設置全局代理,可以依照這樣設置

git config --global http.proxy http://127.0.0.1:1080
git config --global https.proxy https://127.0.0.1:1080

但請注意,需要查看自己的埠是不是也是1080,可以打開你的SS查看代理設置

如圖所示,我的監聽埠就是1087,所以我需要把後面的1080改成1087

3.完成上面一步後,此時輸入git clone xxxxxxx就可以利用代理進行下載了

但同時,也請注意,這裡指的是https協議,也就是

git clone https://www.github.com/xxxx/xxxx.git

這種

對於SSH協議,也就是

git clone git@github.com:xxxxxx/xxxxxx.git

這種,依舊是無效的

4.以上為總結,但我不推薦直接用全局代理

因為如果掛了全局代理,這樣如果需要克隆coding之類的國內倉庫,會奇慢無比

所以我建議使用這條命令,只對github進行代理,對國內的倉庫不影響

git config --global http.https://github.com.proxy https://127.0.0.1:1080
git config --global https.https://github.com.proxy https://127.0.0.1:1080

同時,如果在輸入這條命令之前,已經輸入全局代理的話,可以輸入進行取消

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

------------------------我是分割線-----------------------------

以上是http代理,有評論反映ss暴露的是socks5。但是我在mac上,直接使用http代理是有效的,評論也有人反映有效。但為了以防萬一,附上socks5代理的方法。

1.首先查看自己socks5的埠號

2.我這裡記下來是127.0.0.1:1086

3.然後輸入命令

git config --global http.https://github.com.proxy socks5://127.0.0.1:1086
git config --global https.https://github.com.proxy socks5://127.0.0.1:1086


git config --global http.postBuffer 524288000

這是個很有效的配置,修改後速度有質的提升


clone 比較大的 repo 比如說 linux,直接使用 git clone https://github.com/torvalds/linux.git 會讓你發瘋。這裡介紹一個比較通用的解決方案。在我機器上 clone 速度可以達到 1MiB/s。

1. 作為一枚屌絲程序猿,翻牆工具必不可少。目前來看,shadowsocks 是不二選擇。 這裡簡單介紹下 ubuntu 下運行 shadowsocks 的方法。

sudo apt-get install python-pip
sudo pip install shadowsocks
sudo ssserver -p &

-k &

-m rc4-md5 --user nobody -d start

port 和 password 根據需要填寫。記得防火牆裡開放該監聽的 port。 然後在自己機上上安裝 shadowsocks 客戶端,設置 PAC,開始爽歪歪吧。

2. git 設置 socks5 代理。

git config --global http.proxy "socks5://127.0.0.1:1080"
git config --global https.proxy "socks5://127.0.0.1:1080"

3. 開始 clone,如果覺得倉庫太大,可以在 git clone 中加入參數 --depth=1,只拉取最近的一個 revision。

git clone --depth=1 https://github.com/torvalds/linux.git

4. 如果後面想看歷史的版本,那麼也很好辦,使用 git fetch 即可。

git fetch --unshallow


我的建議是用 ssh:// 的方式去 clone,大多數的代碼託管服務也都支持 ssh 連接。

git clone ssh://github.com/kamikat/moshi-jsonapi.git

優勢是可以使用私玥登錄並且和環境代理保持獨立。

給 SSH 配置代理的方法是打開 ProxyCommand 選項,比如:

Host github.com
User git
ProxyCommand /usr/bin/nc -x 127.0.0.1:8088 %h %p
IdentityFile ~/.ssh/id_rsa

把上面這段寫進 ~/.ssh/config 文件(因為用到私玥認證所以帶了 IdentityFile 選項)這裡 127.0.0.1:8088 是一個 SOCKS5 代理,SSH 會通過 nc 命令打開的管道連接到 GitHub。nc 支持用 -X 指定 SOCKS4、SOCKS5、HTTPS 代理協議,參見 manpage。


echo $https_proxy
socks5://127.0.0.1:8989

設置https_proxy的變數為你的代理,注意協議可能不一樣,有的可能是http協議,我的是socks5


買個最便宜的阿X雲,在裡面git clone然後用ftp拿下來....


git默認是不會使用你的代理的,需要配置讓git去使用你的代理。


內網之間git出現過慢的情況,是不是正好有人在提交,然後這邊git就會出現下載過慢的情況啊!如果不是,誰知道是什麼情況,其它都沒有問題,只有其中一個出現這種情況


天路加速器,看教程。低調不解釋。


git clone 很快的呀...它是根據你的文件大小自動分配的,我上次出事故cocoa pods的時候就達到了7MB/s (家裡百兆寬頻)


推薦閱讀:

一個人寫程序,版本控制用svn還是git?
用 Git 一定要用命令行嗎?用命令行一定高貴嗎?
git合併分支,為什麼會比svn容易?
git: 為什麼 pull request 不叫 push request ?
github上有哪些好的C開源項目?

TAG:Git | GitHub | 計算機網路 |