目 录CONTENT

文章目录
git

Git·设置代理 proxy

青云
2023-12-18 / 0 评论 / 0 点赞 / 29 阅读 / 6746 字
温馨提示:
本文最后更新于 2024-01-07,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

在有条件的情况下, 设置代理能为我们节省很多时间, 让我们开始

  1. 连接情况总览

    1.1 如果远程仓库的格式像下面这样, 这种就是使用 HTTPHTTPS协议连接到Git仓库的情况

    http://github.com/xxx-xxx/xxxx.git
    https://github.com/xxx-xxx/xxxx.git
    

    1.2 如果远程仓库的格式像下面那样, 这种就是使用SSH协议连接到Git仓库的情况

    git@github.com:xxx-xxx/xxxx.git
    ssh://git@github.com/xxx-xxx/xxxx.git
    
  2. 使用HTTPHTTPS协议连接到Git仓库的代理方法

    2.1 针对 所有 域名的 Git 仓库

    # http/https 协议, port 需与代理软件设置一致
    git config --global http.proxy http://127.0.0.1:port
    # socks5 协议
    git config --global http.proxy socks5://127.0.0.1:port
    
    • —-global选项指的是修改Git的全局配置文件~/.gitconfig,而非各个Git仓库里的配置文件.git/config.
    • port则为端口.
      2.2 针对特定域名的Git仓库
    # http/https 协议
    git config --global http.url.proxy http:127.0.0.1:port
    # 以 GitHub 为例
    git config --global http https://github.com proxy http://127.0.0.1:port
    
    # SOCKS5 协议
    git config --global http.url.proxy socks5://127.0.0.1:port
    # 以 GitHub 为例
    git config --global http.https://github.comproxy socks5://127.0.0.1:port
    

    注意:

    • url即为需要走代理的仓库域名,urlhttp://https://打头的均用这个方法。
    • 网上很多中文教程,可能会告诉你https://打头的url使用git config --global https.https://ecample.proxy protocol://127.0.0.1:port,这种做法其实是错误的!记住一点: Git不认https.proxy,设置http.proxy就可以支持https了。
    • 如果想了解url的更多模式, 如子域名等的情况, 可参照Git的官方文档, 网页内容搜索 http..*, 即可找到相关信息.
  3. 使用SSH协议连接到Git仓库的代理方法

    Git依靠ssh处理连接, 为了通过代理进行连接, 必须配置ssh本身, 在~/.ssh/config文件中设置ProxyCommand选项. LinuxmacOS是通过nc来执行ProxyCommand的, Windows下则是通过connect.

    3.1 LinuxmacO用户

    3.1.1 编辑 ~/.ssh/config文件, 给文件加上如下对应内容

    # http 代理
    Host github.com
        User git
        ProxyCommand nc -X connect -x 127.0.0.1:port %h %p
    

    (但是我的 macOS的相关配置是在/Users/mac/.gitconfig里面)

    # 配置指定域名 socks5 代理
    [http "https://github"]
      com = socks5://127.0.0.1:1090
    # 配置全局 http 代理
    [http]
      proxy = http://127.0.0.1:41091
    

    解释:

    • Host后面接的 github.com是指定要走代理的仓库域名;
    • ProxyCommand中,LinuxmacOS用户用的是nc;
    • -X选项后面接的是connect, 意思是 HTTPS代理;
    • -X选项后面加上代理地址和端口号;
    • 在调用 ProxyCommand时, %h%p将会被自动替换为目标主机名和SSH命令指定的端口(%h%p不要修改, 保留原样即可).
      3.1.2
    # SOCKS5 协议
    # 两种方式任选一个
    
    # 第一种
    Host github.com
        User git
        ProxyCommand nc -X 5 -x 127.0.0.1:port %h %p
    # 第二种
    Host github.com
        User git
        ProxyCommand nc -x 127.0.0.1:port %h %p
    

    解释:

    • Host后面接的 github.com是指定要走代理的仓库域名;
    • ProxyCommand中,LinuxmacOS用户用的是nc;
    • 在调用 ProxyCommand时, %h%p将会被自动替换为目标主机名和SSH命令指定的端口(%h%p不要修改, 保留原样即可).
    • 如果 -X选项后面接的是数字5, 那么指的就是 socks5代理
    • 当然不写上-X选项也是可以的, 因为在没有指定协议的情况下,默认是使用socks5代理的, 所以两种写法效果都一样, 都指的是走socks5代理
      3.2 Windows用户

    编辑~/.ssh/config文件,给文件加上如下对应内容, windows~路径一般是C:\Users\用户名, 可在git bash中输入cd ~进入~目录, 再用pwd命令显示当前路径.

    # HTTP 代理
    Host github.com
        User git
        ProxyCommand connect -H 127.0.0.1:port %h %p
    # SOCKS5 代理
    Host github.com
        User git
        ProxyCommand connect -S 127.0.0.1:port %h %p
    

    解释:

    • Host后面接的 github.com是指定要走代理的仓库域名;
    • ProxyCommand中,windows用户用的是connect;
    • -H选项的意思是HTTP代理;
    • -S选项指的就是socks5代理;
    • 在调用 ProxyCommand时, %h%p将会被自动替换为目标主机名和SSH命令指定的端口(%h%p不要修改, 保留原样即可).
  4. 取消

    git config --globl --unset http.proxy
    
    git config --global --unset https.proxy
    
0

评论区