国内的网络情况导致 git 操作 GitHub 仓库速度过慢、甚至出现连接超时的情况。可以通过配置 GitHub Desktop 和 Git 通过小飞机代理加速。

只安装 GitHub Desktop

安装 GitHub Desktop 会在 C:\Users\Username 目录下生成一个名为 .gitconfig 的文件。使用编辑器打开此文件,添加如下字段:

[http]
    proxy = socks5://127.0.0.1:1080

说明:小飞机使用的是 socks5 协议,本地代理端口默认是 1080

安装 GitHub Desktop 和 Git

Git 可以使用四种主要的协议来传输资料:本地协议(Local),HTTP 协议,SSH(Secure Shell)协议及 Git 协议。目前 GitHub 主要使用的 Git 协议就是 HTTPS 协议 和 SSH 协议。以下两张图中的远程仓库 URL 分别使用 HTTPS 协议格式和 SSH 协议格式。

HTTPS协议URL格式
SSH协议URL格式

使用 HTTPS 协议

  1. 如果使用 HTTPS 协议进行 Git,如果对所有的 Git HTTPS 协议的远程仓库使用代理,在 Git Bash 中执行以下指令:

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

    如果需要取消代理,可以执行以下指令:

    git config --global --unset http.proxy
  2. 如果使用 HTTPS 协议进行 Git,如果对所有的 Git HTTPS 协议的 GitHub 远程仓库使用代理,可为 github.com 单独设置代理,在 Git Bash 中执行以下指令:

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

    同理,如果需要取消代理,可以执行以下指令:

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

其实以上操作结果都写入 C:\Users\Username\.gitconfig 文件中,可以使用文本编辑器打开查看,也可以对其直接修改。

使用 SSH 协议

如果使用 SSH 协议则需要在 C:\Users\Username\ 目录下创建 .ssh 目录,然后在 .ssh 目录下创建 config 文件,写入如下:

Host github.com
  User git
  Port 22
  Hostname github.com
  IdentityFile "C:\Users\UserName\.ssh\id_rsa"
  TCPKeepAlive yes
  ProxyCommand connect -S 127.0.0.1:1080 -a none %h %p

Host ssh.github.com
  User git
  Port 443
  Hostname ssh.github.com
  IdentityFile "C:\Users\UserName\.ssh\id_rsa"
  TCPKeepAlive yes
  ProxyCommand connect -S 127.0.0.1:1080 -a none %h %p

说明:

  1. C:\Users\UserName\.ssh\id_rsa 为添加到 GitHub SSH 公钥对应的私钥。如果在 Git Bash 使用 ssh-keygen 生成密钥对,密钥对默认保存在 C:\Users\UserName\.ssh 文件夹。相关配置方法请参考:windows下GitHub的SSH key配置
  2. 使用上述方法代理会导致在 GitHub Desktop 上使用 SSH 协议格式 URL 的远程仓库验证失败(Authentication failed),使用 HTTPS 协议无影响。如下图所示:

如果有解决方法,可以在下方评论,谢谢!


参考

文章目录