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

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

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

在此记录解决步骤,

1、clone

git clone --depath 1 xxx.git

2、切换分支

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

在此通过手工处理:

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

js 复制代码
[remote "origin"]
	url = https://git.code.tencent.com/pokergaga/PokerGagaClient.git
    // fetch = +refs/heads/master:refs/remotes/origin/master  将这行改为分支:3.2.0
	fetch = +refs/heads/3.2.0:refs/remotes/origin/3.2.0

3、奇怪的报错

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

bash 复制代码
git pull
git checkout 3.2.0 #目标分支

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

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

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

bash 复制代码
git fetch --unshallow

可惜还是报同样的错。

4、解决

经过网上多番查着,未发现有遇到过此问题的文章。

再仔细查看了 fetch 命令:

bash 复制代码
git fetch -h
    # ...
	# -k, --keep            keep downloaded pack
	# --unshallow           convert to a complete repository

再次尝试:

bash 复制代码
git fetch --unshallow -k -v

下载成功!

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

相关推荐
研究是为了理解1 小时前
Git Bash 常用命令
git·elasticsearch·bash
DKPT1 小时前
Git 的基本概念和使用方式
git
Winston Wood5 小时前
一文了解git TAG
git·版本控制
喵喵先森5 小时前
Git 的基本概念和使用方式
git·源代码管理
xianwu5436 小时前
反向代理模块
linux·开发语言·网络·git
binishuaio9 小时前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
会发光的猪。9 小时前
如何在vscode中安装git详细新手教程
前端·ide·git·vscode
stewie611 小时前
在IDEA中使用Git
java·git
晓理紫20 小时前
使用git lfs向huggingface提交较大的数据或者权重
git
我不是程序猿儿21 小时前
【GIT】sourceTree的“当前分支“,“合并分支“与“检出分支的区别
git