这篇文章阐述的是在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:
- 打开文件
~/.ssh/id_rsa.pub
,复制里面的公钥 - 打开github网站>点击右上角个人头像>点击setting>点击SSH and GPG keys>点击 new SSH key>填写好title,key type 选择 Authentication Key,粘贴前面复制的公钥至Key中>点击Add SSH key
- 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。