Git基础——代理
在Windows中设置Git代理,解决操作git push
和git clone
时出现连接Github
失败的问题
Git协议
Git支持多种协议,包括http、ssh、git等,这里只介绍使用http和ssh这两种方式设置代理,这两种协议是独立的,如果只设置了其中一种的代理,那么另一种是不会走代理的,具体设置哪种,根据个人需要:
-
通过http的方式类似下面这样
git clone https://github.com/xxx/xxx.git
-
通过ssh的方式类似下面这样
git clone git@github.com:xxx/xxx.git
查看远程仓库地址
git remote -v
修改远程仓库url
git remote set-url origin <url>
设置Git http代理
注意:设置代理前,需要有一个代理服务器,我这里使用本地搭建的socks代理,地址为socks5://127.0.0.1:1080
,如果你是http代理,改为http://127.0.0.1:1080
即可
给所有网站设置http代理
设置git使用http代理
git config --global http.proxy socks5://127.0.0.1:1080
设置成功后,会在C:/Users/username/.gitconfig
文件中添加以下内容
[http]
proxy = socks5://127.0.0.1:1080
查看配置文件是否配置成功:
git config --global -e
如果希望主机名也由代理解析(这意味着通过代理传递所有内容),尤其是在克隆gist
时,可以使用以下设置(关键是它使用socks5h而不是socks5)
git config --global http.proxy socks5h://127.0.0.1:1080
删除http代理:
-
使用以下命令取消设置的代理
git config --global --unset http.proxy
-
也可以手动删除
C:/Users/username/.gitconfig
文件中对应的内容[http] proxy = socks5://127.0.0.1:1080
-
查看是否删除成功
git config --global -e
注意:
- 代理地址
socks5://127.0.0.1:1080
不要加引号 - 不需要配置
https.proxy
,配置了也没用,只需要设置http.proxy
,对http
和https
都起作用
给某个网站设置http代理
如果只想设置某个网站走代理,以github.com
为例,可使用以下命令
git config --global http.https://github.com.proxy socks5h://127.0.0.1:1080
设置成功后,会在C:/Users/username/.gitconfig
文件中添加以下内容
[http "https://github.com"]
proxy = socks5h://127.0.0.1:1080
查看是否配置成功:
git config --global -e
删除代理:
git config --global --unset http.https://github.com.proxy
查看是否删除成功:
git config --global -e
设置Git SSH代理
在C:\Users\username\.ssh\config
文件中添加相关配置,如果没有config文件需要手动创建,connect命令是git Windows客户端git for windows
自带的, 位于<Git-install-path>\mingw64\bin\connect.exe
-
socks代理添加以下配置
Host github.com(改成你的站点) ProxyCommand connect -S 127.0.0.1:1080 %h %p
-
如果使用http代理,则需要将
-S
改成-H
使用以下配置Host github.com(改成你的站点) ProxyCommand connect -H 127.0.0.1:1080 %h %p
可以配置多个网站Host
Host github.com(改成你的站点)
ProxyCommand connect -H 127.0.0.1:1080 %h %p
Host bitbucket.org(改成你的站点)
ProxyCommand connect -H 127.0.0.1:1080 %h %p
如果Host设置为*
,代理会对所有未配置的Host起作用。以下有三项配置,访问github使用第二项配置,访问bitbucket使用第三项配置,其它网站使用第一项配置
Host *
ProxyCommand "C:/Program Files/Git/mingw64/bin/connect.exe" -H {proxyserver}:{port} %h %p
IdentityFile "C:/Users/username/.ssh/id_rsa"
TCPKeepAlive yes
IdentitiesOnly yes
Host github.com(改成你的站点)
ProxyCommand connect -H 127.0.0.1:1080 %h %p
Host bitbucket.com(改成你的站点)
ProxyCommand connect -H 127.0.0.1:1080 %h %p
其中ProxyCommand
命令中,%h
引用配置文件中的host,%p
引用配置的端口(这里没有配置,默认端口为22)