V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Roseboy
V2EX  ›  程序员

git clone 有没有什么有效的加速方法

  •  
  •   Roseboy · 2020-01-31 17:45:15 +08:00 · 9427 次点击
    这是一个创建于 1789 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大佬们,新年好!
    本人小白一枚,想请问一下大家有什么有效的办法能够为 git clone 进行提速?
    29 条回复    2020-03-16 10:51:39 +08:00
    tomczhen
        1
    tomczhen  
       2020-01-31 17:47:23 +08:00 via Android
    --depth
    AmosAlbert
        2
    AmosAlbert  
       2020-01-31 17:49:55 +08:00
    飞机
    LEXUGE
        3
    LEXUGE  
       2020-01-31 17:52:20 +08:00
    路由器穿墙
    rainysia
        4
    rainysia  
       2020-01-31 18:02:21 +08:00
    --depth 1
    versee
        5
    versee  
       2020-01-31 18:11:56 +08:00 via Android
    走代理不就是了
    versee
        6
    versee  
       2020-01-31 18:13:52 +08:00
    git config --global http.proxy 'socks5://127.0.0.1:port' & git config --global https.proxy 'socks5://127.0.0.1:port'
    port 换成你自己的端口号,前提你有梯子
    creanme
        7
    creanme  
       2020-01-31 18:14:49 +08:00   ❤️ 1
    如果有 ss 或者 ssr 可以设置代理
    git config --global http.proxy socks5://127.0.0.1:1080
    tairan2006
        8
    tairan2006  
       2020-01-31 18:30:19 +08:00
    等 git 把局部 clone 这个 feature 稳定下来。。
    hagha
        9
    hagha  
       2020-01-31 18:52:22 +08:00 via Android
    代理,没有的话改 Hosts 也许有用
    CStarter
        10
    CStarter  
       2020-01-31 19:35:50 +08:00 via Android
    在 gitee 上建个仓库,可以直接拉 github 仓库,再在本地拉 gitee
    harvies
        11
    harvies  
       2020-01-31 20:00:23 +08:00
    proxychains4 git clone

    安装 proxychains 然后设置代理

    或者设置 http 代理
    Buges
        12
    Buges  
       2020-01-31 20:04:31 +08:00 via Android
    git 明明快的很,大量小文件都能刷刷的传,不要妄图用技术解决政治问题。
    jinliming2
        13
    jinliming2  
       2020-01-31 20:13:38 +08:00   ❤️ 2
    挂代理,如果是 HTTP 协议,那么像楼上说的那样
    git config --global http.proxy 'socks5h://localhost:port'
    或者指定单给某个域名的仓库设置:
    git config --global 'http.https://github.com.proxy' 'socks5h://localhost:port'

    如果是 SSH 协议,那么就要编辑 ~/.ssh/config 文件(没有的话新建一个,权限 600 ),增加这个配置:
    Host github.com
    ProxyCommand /usr/bin/nc -X 5 -x localhost:port %h %p
    其中 %h 和 %p 要原样保留,-X 5 表示使用 socks5 代理。
    需要 BSD 的 netcat ( nc )工具。
    ysc3839
        14
    ysc3839  
       2020-01-31 20:32:34 +08:00 via Android
    @versee @creanme @jinliming2
    git 使用 libcurl 进行 http 请求,如果把 proxy 设置成 socks5 的话,libcurl 会先用本地 DNS 解析域名再向 proxy 发送请求,应该使用 socks5h。
    https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html
    jinliming2
        15
    jinliming2  
       2020-02-01 00:10:52 +08:00 via iPhone
    @ysc3839 嗯,注意看,我写的就是 socks5h
    crclz
        16
    crclz  
       2020-02-01 08:56:02 +08:00
    挂 ssr 或者 v2ray,然后单独设置一下 git 的端口,然后 clone ;
    国内的托管服务( gitee 阿里云)从 GitHub 导入项目,然后 clone ;
    在阿里云服务器上面 clone (阿里云服务器连接 GitHub 比较快),然后再 sftp 下载下来
    RickyC
        17
    RickyC  
       2020-02-01 10:08:14 +08:00
    用码云代替 github
    littleMaple
        18
    littleMaple  
       2020-02-01 11:21:52 +08:00   ❤️ 1
    楼主你的问题可能是两种解答,一种可能是通过解决由于各种原因引致的网速问题来加速 git-clone,另一种可能是通过加快 git-clone 的非网络 IO 部分的速度来加速.

    试试翻翻源码,有没有还可以通过减损可读性获取极致优化的地方,Git 的维护者和大部分开源项目的维护者一样为了可读性和可维护性一般愿意牺牲进一步的优化空间,不过你自己自用的话就不用在意这个 tradeoff,直接各种 tricks 走起.

    说起 C 代码优化,顺便推荐一下这篇文章: http://icps.u-strasbg.fr/~bastoul/local_copies/lee.html
    Roseboy
        19
    Roseboy  
    OP
       2020-02-01 12:36:20 +08:00
    @hagha 昨天改了一下,没啥用。还是代理吧...
    crella
        20
    crella  
       2020-02-01 12:52:00 +08:00 via Android
    顺路找个直升机,只搜索谷歌文字和 stackoverflow,不看视频、不上 youtube,不下 github,一个月 5 块或者按流量计费可以吗?
    zappos
        21
    zappos  
       2020-02-01 14:44:08 +08:00 via Android
    > @Tranvin 在 gitee 上建个仓库,可以直接拉 github 仓库,再在本地拉 gitee

    👍👍
    ysc3839
        22
    ysc3839  
       2020-02-01 15:07:24 +08:00 via Android
    @jinliming2 我看到了,只是顺便 @ 一下你。
    billchenchina
        23
    billchenchina  
       2020-02-01 15:09:18 +08:00 via Android
    断点续传
    本地先 git init 一个空仓库,然后用 git fetch
    HENQIGUAI
        24
    HENQIGUAI  
       2020-02-01 18:56:36 +08:00
    先导入 gitee,然后从 gitee clone
    KaynW
        25
    KaynW  
       2020-02-01 20:58:13 +08:00
    git 设置全局代理
    geligaoli
        26
    geligaoli  
       2020-02-02 01:32:57 +08:00
    @jinliming2 推荐方案。另外,对于 linux 的 ssh 中转,也可以直接使用 ProxyCommand ssh -q -W %h:%p 中转 IP。
    NoDocCat
        27
    NoDocCat  
       2020-02-03 00:13:10 +08:00
    用 https 的链接, 然后设置 http proxy
    ThanksSirAlex
        28
    ThanksSirAlex  
       2020-03-15 22:31:06 +08:00
    @creanme 请教一下设置成 socks5 协议会报 Failed to connect to 127.0.0.1 port 1080: Connection refused。然后设置成 http 协议没有加速效果怎么破
    creanme
        29
    creanme  
       2020-03-16 10:51:39 +08:00
    @ThanksSirAlex 说明你 socks5 没代理到 1080 端口。检查一下 ss 的设置。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5730 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 06:09 · PVG 14:09 · LAX 22:09 · JFK 01:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.