由于 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
,成功!