Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
47 lines (33 sloc) 2.19 KB
title subtitle slug date layout tags
Git 很慢怎么办
it's fucking slow, guess why
git-is-slow
2019-08-15 15:05:43 UTC
post
git

当你想要解决一个问题的时候,最好先学会尽可能准确地描述你的问题,像「Git 很慢怎么办」之类的问题就是反面教材,这就像说「我的国家不行了」一样,这种模棱两可、似是而非的问题对出题人和答题人都是一种困扰,出题人把握不了自己的问题,便始终不会自查,答题人无法知晓出题人真正的问题,也只能一顿瞎猜。

如果你假以思考,结合实际情况,比如你操作的命令,是 git clone 还是 git checkout? 这样就能很快推断出真正的问题,即「Git clone 很慢怎么办」,如果更进一步,你想到你正在 clone 的是一个国外的地址,比如 github.com,你会想到这也许是网络问题。

当你做出更多的判断而不是用一个模糊的问题来让别人替你判断的时候,你的问题也就迎刃而解了。

现在这个模糊的问题变成了解决 Git 同步国外项目的网络问题了,这种情况你应该很熟悉,可以使用「代理」来解决。而 Git 支持两种网络传输协议,即 HTTP 和 SSH 协议,于是你只需要在 Google 搜索 Git 如何配置 HTTP 代理和 SSH 代理 就行了,当然也可以继续阅读,参考我用的配置。

配置 HTTP 代理

如果你 git clone 时用的是 http 开头的地址,那就得配置 http 代理:

git config --global http.proxy http://127.0.0.1:1087
# 或者 Socks5 代理
git config --global http.proxy socks5://127.0.0.1:1086

配置 SSH 代理

如果你 git clone 时用的是 ssh 开头的地址,那就得配置 SSH 代理。

对 macOS 用户,你可以使用 connect,这是一个让 SSH 支持 SOCKS/HTTPS 代理的工具,这里我们用 homebrew 来安装:

brew install connect

然后编辑你的 ~/.ssh/config 文件,加入以下代码:

Host *
  User git
  ProxyCommand connect -S 127.0.0.1:1086 %h %p

这样 SSH 连接时就会使用位于 127.0.0.1:1086 的代理。

You can’t perform that action at this time.