• 请不要在回答技术问题时复制粘贴 AI 生成的内容
yanyueio
V2EX  ›  程序员

git clone 时如何提高 git 协议的传输速度

  •  
  •   yanyueio · Mar 18, 2020 · 6613 views
    This topic created in 2433 days ago, the information mentioned may be changed or developed.

    从 github clone,如果走 git 协议一般会很慢,我这边一般会切换到 https 配置 git-credentials 和 access key,走 https 或者 socket5 代理,来提高速度,大概 500 KBi/s 的速度,so far so good.

    但是这里需要单独生成 access key,且这个秘钥是暴露在文件中的。

    所以想问大佬们,有没有人走 git 协议,去跑代理的?

    any advice will be grateful.

    31 replies  •  2020-03-22 01:44:20 +08:00
    unixeno
    unixeno
    Mar 18, 2020 via Android
    1
    git 就是走的 ssh,所以得在 ssh 配置里加代理
    v2byy
    v2byy
    Mar 18, 2020 via iPhone
    2
    你说的是直接在 git config 中配置下 host 为 github 就走 http proxy ?需要单独生成 access key 吗
    yuanfnadi
    yuanfnadi
    Mar 18, 2020
    3
    ```
    Host *
    UseKeychain yes
    Host github.com
    HostName github.com
    User git
    ProxyCommand nc -v -x 127.0.0.1:7891 %h %p
    ```

    不谢
    yanyueio
    yanyueio
    OP
    Mar 18, 2020
    4
    .ssh 文件中配置的 config 文件中设置的 http 或者 https 代理也只是配置的 http/https 的代理,它无法针对 ssh/git 生效。

    @v2byy access key 是因为我配置了 2fa,即 google authenticator 两步验证,所以直接走 https 的密码不行,必须在 github 上的 developer 项目里生成 access key 代替原来的 github 密码。
    exiledkingcc
    exiledkingcc
    Mar 18, 2020
    5
    我一般直接这样就行了:
    export HTTPS_PROXY=....
    git clone ......
    yanyueio
    yanyueio
    OP
    Mar 18, 2020
    6
    @yuanfnadi 您这个是针对 git clone ssh:// 生效的吧?

    确定 github clone [email protected] 也行?
    BrettD
    BrettD
    Mar 18, 2020 via iPhone
    7
    @exiledkingcc 这个只能代理 HTTPS 不能代理 SSH 协议吧?
    run2
    run2
    Mar 18, 2020
    8
    @yuanfnadi #3 git config --global https.proxy 不香么?
    yanyueio
    yanyueio
    OP
    Mar 18, 2020❤️1
    9
    OK,刚刚试了一下,借助 nc 命令,是可以走到 socks5 代理的。

    然后速度大致是直接用 https 的一般 275 KiB/s 左右。

    @sobigfish 这里的关键是想实现的是免密,且不明文暴露密码。


    结贴了,感谢以上各位的热心。

    我的最终配置如下:


    ```bash
    HOST github.com
    UseKeychain yes
    Host github.com
    HostName github.com
    IdentityFile /Users/yanyueio/.ssh/YanYueIO-PUB
    port 22
    User git
    ProxyCommand nc -v -x 127.0.0.1:1086 %h %p

    ```

    再次谢谢各位了。
    yanyueio
    yanyueio
    OP
    Mar 18, 2020
    10
    补充:

    貌似速度和代理的拥塞程度有关,不一定是一半,有时候比直接用 https 的快。

    remote: Enumerating objects: 1177, done.
    remote: Counting objects: 100% (1177/1177), done.
    remote: Compressing objects: 100% (205/205), done.
    Receiving objects: 32% (602/1879), 134.14 MiB | 1.16 MiB/s
    Tianao
    Tianao
    Mar 18, 2020
    11
    export all_proxy=socks5://[IP]:[port]
    wuwukai007
    wuwukai007
    Mar 18, 2020
    12
    其实下载 zip 压缩包 并用迅雷下载超快的。
    jinfeng333
    jinfeng333
    Mar 18, 2020
    13
    软路由 + 番茄上网
    GitHub clone 一般 10M/s 峰值 20M/s

    ![]( https://wujunze.com/blog-images/r/pic/20200318124007.png)
    jinfeng333
    jinfeng333
    Mar 18, 2020
    14
    @yanyueio #6 楼主 多少 M 带宽
    brzhang
    brzhang
    Mar 18, 2020 via iPhone
    16
    梯子
    hshpy
    hshpy
    Mar 18, 2020
    17
    proxychains
    ysc3839
    ysc3839
    Mar 18, 2020 via Android
    18
    @yanyueio 你所说的 [email protected] 不是“git 协议”,是 SSH 协议的简写。
    jinsongzhao
    jinsongzhao
    Mar 18, 2020
    19
    @wuwukai007 不考虑自动更新代码吗?
    bigmomo
    bigmomo
    Mar 18, 2020
    20
    代理不行

    [root@localhost ~]# git clone https://github.com/coolsnowwolf/lede.git
    Cloning into 'lede'...
    remote: Enumerating objects: 58485, done.
    Receiving objects: 35% (20685/58485), 70.76 MiB | 4.82 MiB/s
    exiledkingcc
    exiledkingcc
    Mar 18, 2020
    21
    @BrettD 是只能 https
    hwenwur
    hwenwur
    Mar 18, 2020 via Android
    22
    alias git=""proxychains4 -q git"
    xingheng
    xingheng
    Mar 18, 2020
    23
    如果只是想做一次性 clone (不需要拉取更新)的话,可以加上--depth 1 的选项,可以让需要 clone 的 git objects 少一个数量级,对 commit 数量比较大的仓库尤其明显。间接提高速度了,我是从一些包管理工具封装的 git log 学到的。
    bigdogbigpig
    bigdogbigpig
    Mar 18, 2020
    24
    出国
    msg7086
    msg7086
    Mar 18, 2020❤️1
    25
    Git 协议是 git://
    SSH 协议是 (ssh://)git@

    GitHub 虽然支持 git 协议但是网页上只会给 SSH 和 HTTPS 两种。
    IGJacklove
    IGJacklove
    Mar 18, 2020
    26
    代理不就可以了?
    Timzzzzz
    Timzzzzz
    Mar 18, 2020
    27
    可以是下 Proxychains 对我有效
    binaryify
    binaryify
    Mar 19, 2020
    28
    我是开 proxifier
    akatquas
    akatquas
    Mar 19, 2020
    29
    走代理是一条,

    加 depth 也可以,后续分支按需拉
    AlexaZhou
    AlexaZhou
    Mar 19, 2020
    30
    对各种命令行工具,可以用 proxychains 统一搞定

    proxychains git clone .... 就自动走代理了
    123444a
    123444a
    Mar 22, 2020 via Android
    31
    ssh,从小没用过 https 拉代码
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   884 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 68ms · UTC 20:48 · PVG 04:48 · LAX 12:48 · JFK 15:48
    ♥ Do have faith in what you're doing.