Git 的配置与代理设置

 

这篇文章阐述的是在windows下git的配置与代理设置(以 github 为例)。

Git的配置

  • 安装git
  • 配置用户名和邮箱
git config --global user.name "wangmeiting"
git config --global user.email "wangmeiting92@gmail.com"
  • 生成ssh公钥
ssh-keygen -t rsa -C "wangmeiting92@gmail.com"
  • 配置公钥至github:
    1. 打开文件~/.ssh/id_rsa.pub,复制里面的公钥
    2. 打开github网站>点击右上角个人头像>点击setting>点击SSH and GPG keys>点击 new SSH key>填写好title,key type 选择 Authentication Key,粘贴前面复制的公钥至Key中>点击Add SSH key
    3. git bash里输入ssh -T git@github.com,检测以上操作是否成功。

Git的代理设置

配置好代理软件(如v2rayN)并不能使得终端走代理,所以我们需要对终端进行单独的代理设置。

设置HTTP代理或SOCKS5代理

本部分代理只能二选一,即只设置HTTP代理或只设置SOCKS5代理。

# 设置 HTTP 代理:
git config --global http.proxy "http://127.0.0.1:10809"
git config --global https.proxy "http://127.0.0.1:10809"

# 设置 SOCKS5 代理:
git config --global http.proxy "socks5://127.0.0.1:10808"
git config --global https.proxy "socks5://127.0.0.1:10808"

# 查看代理设置情况
cat ~/.gitconfig

# 取消代理设置:
git config --global --unset http.proxy
git config --global --unset https.proxy

# 测试 HTTPS clone 速度
git clone https://github.com/XXXXXX/XXXXXX.git

此时github的https clone、https提交、ssh提交均可走代理,而ssh的clone不能。

单独为GitHub的SSH克隆设置代理

为解决上面说的问题,下面仅为github ssh的clone设置代理:

# 在指定位置创建并打开config文件
vi ~/.ssh/config

# 在config文件中添加以下内容
ProxyCommand connect -S 127.0.0.1:10808 -a none %h %p #注意需填写代理软件socks5代理端口
Host ssh.github.com
  User git
  Port 443
  Hostname ssh.github.com
  IdentityFile "C:\Users\wmt\.ssh\id_rsa" #修改为自己指定文件的路径
  TCPKeepAlive yes

# 再次检验是否能远程连接到 github
ssh -T git@github.com

# 测试 SSH clone 速度
git clone git@github.com:XXXXXX/XXXXXX.git

这里需要注意的是,该方法将与ssh的提交有冲突。即采用了该方法,将使得ssh的clone不能走代理。

使用过程中遇见的一些问题

  • 在国内用 SSH 克隆的仓库速度极其之慢,且在之后的上传中,也慢的离谱,还经常断线(尽管已经挂上了魔法上网软件)。解决方案是:挂上魔法上网软件,设置好 git bash 的代理,走 HTTPS,而不是 SSH。

参考资料