• 仓库太大,clone 后,git pull 老分支成功,最新分支失败


    由于 git 仓库太大,新加入的小伙伴在拉取时,无法切换到最新的分支,报错如下:

    fetch-pack: unexpected disconnect while reading sideband packet
    fatal: early EOF
    fatal: fetch-pack: invalid index-pack output
    
    • 1
    • 2
    • 3

    在此记录解决步骤,

    1、clone

    git clone --depath 1 xxx.git
    
    • 1

    2、切换分支

    由于未 clone 整个仓库,也就拉不到所有分支,自然无法通过 checkout 切换分支。
    在此通过手工处理:

    1、打开根目录下的隐藏文件:.git/config
    2、改动文件:

    [remote "origin"]
    	url = https://git.code.tencent.com/xxx.git
        // fetch = +refs/heads/master:refs/remotes/origin/master  将这行改为分支:3.2.0
    	fetch = +refs/heads/3.2.0:refs/remotes/origin/3.2.0
    
    • 1
    • 2
    • 3
    • 4

    3、奇怪的报错

    如上改了配置文件后,一般执行如下代码即可:

    git pull
    git checkout 3.2.0 #目标分支
    
    • 1
    • 2

    以前在这一步都很顺利,但这一次居然不行,在 git pull 时报同样的错。

    然后在手工换到上一个版本 3.1.0 再试,嘿,居然成功了!

    再尝试将 3.1.0 历史全部下载:

    git fetch --unshallow
    
    • 1

    可惜还是报同样的错。

    4、解决

    经过网上多番查着,未发现有遇到过此问题的文章。
    再仔细查看了 fetch 命令:

    git fetch -h
        # ...
    	# -k, --keep            keep downloaded pack
    	# --unshallow           convert to a complete repository
    
    • 1
    • 2
    • 3
    • 4

    再次尝试:

    git fetch --unshallow -k -v
    
    • 1

    下载成功!

    再如上步骤2、3 所示,手工切换到 3.2.0,成功!

  • 相关阅读:
    Ai图像绘制模型训练以及应用
    Linux线程控制
    强转对象方法
    2.4_1死锁的概念
    Linux基础——ELK Stack
    Baklib|SaaS产品,实现企业流程数字化
    pg ash自制版 pg_active_session_history
    PCN、ECN
    HTML 之常用标签的介绍
    GPT-3 内幕机制可视化解析
  • 原文地址:https://blog.csdn.net/womendeaiwoming/article/details/132620494