git clone 时如何提高 git 协议的传输速度 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
yanyueio
V2EX    程序员

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

  •  
  •   yanyueio 2020-03-18 11:57:07 +08:00 5853 次点击
    这是一个创建于 2112 天前的主题,其中的信息可能已经有所发展或是发生改变。

    从 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 条回复    2020-03-22 01:44:20 +08:00
    unixeno
        1
    unixeno  
       2020-03-18 11:59:05 +08:00 via Android
    git 就是走的 ssh,所以得在 ssh 配置里加代理
    v2byy
        2
    v2byy  
       2020-03-18 12:00:28 +08:00 via iPhone
    你说的是直接在 git config 中配置下 host 为 github 就走 http proxy ?需要单独生成 access key 吗
    yuanfnadi
        3
    yuanfnadi  
       2020-03-18 12:01:21 +08:00
    ```
    Host *
    UseKeychain yes
    Host github.com
    HostName github.com
    User git
    ProxyCommand nc -v -x 127.0.0.1:7891 %h %p
    ```

    不谢
    yanyueio
        4
    yanyueio  
    OP
       2020-03-18 12:02:39 +08:00
    .ssh 文件中配置的 config 文件中设置的 http 或者 https 代理也只是配置的 http/https 的代理,它无法针对 ssh/git 生效。

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

    确定 github clone [email protected] 也行?
    BrettD
        7
    BrettD  
       2020-03-18 12:08:43 +08:00 via iPhone
    @exiledkingcc 这个只能代理 HTTPS 不能代理 SSH 协议吧?
    run2
        8
    run2  
       2020-03-18 12:13:11 +08:00
    @yuanfnadi #3 git config --global https.proxy 不香么?
    yanyueio
        9
    yanyueio  
    OP
       2020-03-18 12:17:12 +08:00   1
    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
        10
    yanyueio  
    OP
       2020-03-18 12:18:38 +08:00
    补充:

    貌似速度和代理的拥塞程度有关,不一定是一半,有时候比直接用 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
        11
    Tianao  
       2020-03-18 12:28:05 +08:00
    export all_proxy=socks5://[IP]:[port]
    wuwukai007
        12
    wuwukai007  
       2020-03-18 12:35:52 +08:00
    其实下载 zip 压缩包 并用迅雷下载超快的。
    wujunze
        13
    wujunze  
       2020-03-18 12:40:42 +08:00
    软路由 + 番茄上网
    GitHub clone 一般 10M/s 峰值 20M/s

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

    [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
        21
    exiledkingcc  
       2020-03-18 14:23:31 +08:00
    @BrettD 是只能 https
    hwenwur
        22
    hwenwur  
       2020-03-18 14:28:30 +08:00 via Android
    alias git=""proxychains4 -q git"
    xingheng
        23
    xingheng  
       2020-03-18 14:36:38 +08:00
    如果只是想做一次性 clone (不需要拉取更新)的话,可以加上--depth 1 的选项,可以让需要 clone 的 git objects 少一个数量级,对 commit 数量比较大的仓库尤其明显。间接提高速度了,我是从一些包管理工具封装的 git log 学到的。
    mazyi
        24
    mazyi  
    PRO
       2020-03-18 16:55:33 +08:00
    出国
    msg7086
        25
    msg7086  
       2020-03-18 17:00:43 +08:00   1
    Git 协议是 git://
    SSH 协议是 (ssh://)git@

    GitHub 虽然支持 git 协议但是网页上只会给 SSH 和 HTTPS 两种。
    IGJacklove
        26
    IGJacklove  
       2020-03-18 17:32:27 +08:00
    代理不就可以了?
    Timzzzzz
        27
    Timzzzzz  
       2020-03-18 23:20:47 +08:00
    可以是下 Proxychains 对我有效
    binaryify
        28
    binaryify  
       2020-03-19 09:31:28 +08:00
    我是开 proxifier
    akatquas
        29
    akatquas  
       2020-03-19 10:45:51 +08:00
    走代理是一条,

    加 depth 也可以,后续分支按需拉
    AlexaZhou
        30
    AlexaZhou  
       2020-03-19 13:36:46 +08:00
    对各种命令行工具,可以用 proxychains 统一搞定

    proxychains git clone .... 就自动走代理了
    123444a
        31
    123444a  
       2020-03-22 01:44:20 +08:00 via Android
    ssh,从小没用过 https 拉代码
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4174 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 05:32 PVG 13:32 LAX 21:32 JFK 00:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86