前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于git代理的使用姿势

关于git代理的使用姿势

作者头像
用户3904122
发布2022-06-29 14:55:51
5000
发布2022-06-29 14:55:51
举报
文章被收录于专栏:光华路程序猿光华路程序猿

上午用git下载两个带测试集、训练集的AI工程,不使用Proxy,确实给恶心的不要不要的。。。

通常使用代理主要原因无非有二:

  • 访问速度实在令人发指
  • unable to access '...' Couldn't resolve host '...'的情况,没办法只能访问国外网站解决

正常我们从github获取repo通常是这样的

代码语言:javascript
复制
Cloning into 'xxx'...

remote: Enumerating objects: 13, done.
remote: Counting objects: 100% (13/13), done.
remote: Compressing objects: 100% (9/9), done.
Receiving objects:  16% (359/2241), 100.01 KiB | 29.00 KiB/s

下载速度只有29kib/s,对于稍微大点儿的repo来说显然等的让人焦心。好在一般工作都会提供一些代理,用上代理访问github repo速度就有了质的飞跃:

代码语言:javascript
复制
Cloning into 'xxx'...
remote: Enumerating objects: 13, done.
remote: Counting objects: 100% (13/13), done.
remote: Compressing objects: 100% (9/9), done.
Receiving objects:  96% (2171/2241), 10.05 MiB | 4.85 MiB/s

好比单车变火箭🚀。

因为之前使用的代理比较粗暴裸着没有认证,所以使用起来比较简单:

代码语言:javascript
复制
alias proxy='export all_proxy=http://yourproxydomain:port'

或者你想精细化区分httphttps代理

代码语言:javascript
复制
alias httpProxy='export http_proxy=http://yourproxydomain:port'
alias httpsProxy='export https_proxy=http://yourproxydomain:port'

都不需要进行git config配置。不过最近裸着的代理终于给加上认证了,直接使用上面的方式来download github的repo就不好使了。

既然有了认证,那么使用代理自然需要用户名密码,上面代理需要改成如下配置:

代码语言:javascript
复制
alias proxy='export all_proxy=http://username:password@yourproxydomain:port'

alias httpProxy='export http_proxy=http://username:password@yourproxydomain:port'
alias httpsProxy='export https_proxy=http://username:password@yourproxydomain:port'

有了上面配置访问网址啥的没啥问题,但是git clone时会失败:

代码语言:javascript
复制
Cloning into 'xxx'...
fatal: unable to access 'https://github.com/xxx/xxx.git/': Proxy CONNECT aborted

因为有了认证代理,git需要设置下认证方法为basic

代码语言:javascript
复制
git config --global http.proxyAuthMethod 'basic'

这样使用终端代理配置加上git代理方法的设置问题就解决了。以上这些仅是个人的配置,如果你觉得麻烦,网上也有很多插件供你选择使用。

当然git也专门提供了关于代理配置,我们可以不设置终端代理让git自己走代理,接下来一起来看看吧

git代理配置

git通常支持httpsssh两种协议,因为使用协议不同,它们代理的配置也有很大差异。

Http配置代理

git http代理的配置比较简单,一条命令即可解决:

代码语言:javascript
复制
git config --global http.proxy http://proxyUsername:proxyPassword@proxy.server.com:port

或者你也可以对指定域名进行代理:

代码语言:javascript
复制
git config --global http.https://domain.com.proxy http://proxyUsername:proxyPassword@proxy.server.com:port
git config --global http.https://domain.com.sslVerify false

如果你使用了中间人Https代理,需要将http.<url>.sslVerify设置为false。或者,你可以获取证书链的根CA,并使用http.sslCAInfohttp.sslCAPath来指定。

上面这些命令会最终记录在~/.gitconfig文件中:

代码语言:javascript
复制
[http]
[http "https://domain.com"]
 proxy = http://proxyUsername:proxyPassword@proxy.server.com:port
 sslVerify = false

当你遇到unable to access 'https://...': Unknown SSL protocol error in connection to ...:443你也可以针对当前repo操作单独使用-c http.sslVerify=false设置ssl检验开关。

代码语言:javascript
复制
git -c http.sslVerify=false clone https://domain.com/path/to/git

一旦repo克隆成功,你也可以针对当前repo设置sslVerify,其设置结果作用于当前repo.git/config中,注意这里没有--config

代码语言:javascript
复制
git config http.sslVerify false
查看当前的配置

展示当前全局http配置,即~/.gitconfig中的http部分

代码语言:javascript
复制
git config --global --get-regexp http
取消代理或ssl verification配置

使用--unset可删除特定属性的配置。如取消http.proxyhttp.sslVerify:

代码语言:javascript
复制
git config --global --unset http.proxy
git config --global --unset http.https://domain.com.proxy

git config --global --unset http.sslVerify
git config --global --unset http.https://domain.com.sslVerify

ssh代理配置

git ssh的代理配置保存在~/.ssh/config中,如果没有可以创建一个。配置格式如下:

对于需要认证的代理需要安装下ncatmacbrew install nmap即可。

代码语言:javascript
复制
# 例如github.com的配置
# User、Hostname、Port 为ssh登录的服务器配置
# 注意的是这里的 User 应该是 git,而不是你在该网站上注册的用户名。 其他网站可以根据具体情况设置
Host github.com
        User    git
        Hostname        github.com
        Port    22
        Proxycommand    /usr/bin/ncat --proxy proxy.server.com:port  --proxy-type http --proxy-auth proxyUsername:proxyPassword  %h %p

如果Host设置为*,则此配置会应用到没有独立配置的ssh连接中。--proxy-type可以设置代理使用的协议,如:http ,socks4,socks5

这样就可以愉快使用代理了。当然感兴趣也可以man git-config查阅,相信很多问题可以迎刃而解。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 光华路程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • git代理配置
    • Http配置代理
      • 查看当前的配置
      • 取消代理或ssl verification配置
    • ssh代理配置
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档