仓库太大,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,成功!

相关推荐
誰能久伴不乏4 小时前
看懂 Git 团队协作全流程:分支、提交、PR、rebase 到底在干嘛
git
sunshine22 girl9 小时前
git tag-项目流程
git
imDwAaY1 天前
6篇文章讲清楚Git:Git 远程协作:fetch、pull、push 到底有什么区别?(3/6)
git·后端
imDwAaY1 天前
6篇文章讲清楚Git:Git 撤销与恢复:reset、revert、restore 应该怎么选?(4/6)
git
用户73309646123091 天前
再也不怕手滑丢代码!给 git 高危操作加一层安全校验
git
广白1 天前
Git Tag 实战:从出包追溯到版本发布
前端·git·面试
Winlifes6 天前
我给 Codex 做了一个 Git 面板:分支树、提交历史和工作区操作
git
郑州光合科技余经理7 天前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
我命由我123457 天前
Git 推送报错:error: src refspec main does not match any
运维·git·gitee·github·运维开发·学习方法·版本控制
Lcr3s7 天前
Git基础之(0):如何在Ubuntu(Linux)上安装git
git