前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git常见问题

Git常见问题

作者头像
hotarugali
发布2022-03-10 15:31:20
4.4K0
发布2022-03-10 15:31:20
举报
文章被收录于专栏:hotarugaliの技术分享

1. remote:error:File:××× exceeds 100.00 MB. ⋯\cdots⋯ remote:Please remove the file from history and try again.

  • 问题:上传文件超出远程仓库的限制
  • 解决:

方案一:撤销上一次 commit,会退到上一次 commit 前的状态,然后移除超出限制的文件,重新上传。 git reset HEAD^ # 撤销上一次 commit 【注意事项】 若不小心错误回退到上次版本,需要撤销 reset 操作,则可以使用以下代码查看 git HEAD 变化的历史记录。 git reflog 然后使用 git reset 回退到的历史记录: git reset XXX # XXX 为想要会退到的历史记录的 HEAD 当然,这种方法也能解决上传文件超出远程仓库的限制而导致的上传失败问题。

方案二:删除大文件的提交记录。

  1. 首先根据报错提示的记录 id(此处以 d0781e7d125599010f4885fa95802a1d7018cd44 为例)查询该大文件的路径:

git rev-list --objects --all | grep d0781e7d125599010f4885fa95802a1d7018cd44 得到该大文件路径为 data/data.mp4 。 2. 然后将该文件从历史记录中删除: git log --pretty=oneline --branches -- data/data.mp4

  1. 最后重写所有的提交:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch data/data.mp4' -- --all

2. fatal: unable to checkout working tree. warning: Clone succeeded, but checkout failed.

  • 问题:成功 Clone,但是目录下的文件并没有恢复,原因在于目录中存在文件名不符合规范的文件。
  • 解决:对于由于长文件名导致的问题,可以修改 git 配置:
代码语言:javascript
复制
git config --system core.longpaths true
git config --global core.longpaths true

对于由于文件名中存在非法字符,需要修改远程仓库的文件名后在重新 pull 一下。

【注】windows 下的文件名要求:文件名、文件夹名不能包括的符号 \、/、:、*、?、"、<、>、|

3. fetch-pack: unexpected disconnect while reading sideband packet

  • 问题:使用 ssh 认证能连上 Gitee,但 git clone Gitee 上的仓库报错,git 版本及报错信息如下:
代码语言:javascript
复制
(base) ➜  ~ git --version                         
git version 2.33.0
(base) ➜  ~ ssh -T git@gitee.com                        
Hi BlueHeart0621! You've successfully authenticated, but GITEE.COM does not provide shell access.
(base) ➜  ~ git clone git@gitee.com:blueheart0621/OS.git 
Cloning into 'OS'...
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output
  • 原因:git 版本 2.33.0 是目前最新的,它修改了 sideband 的处理方式,导致 Gitee 服务器处理 git clone 的 ssh 连接时有问题,Gitee 的技术人员正在努力排查中(相信不久就会解决)。
  • 解决:降低 git 的 protocol 版本:
代码语言:javascript
复制
git config --global protocol.version 1

4. fatal: unable to access 'xxx': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

  • 问题:仓库网站证书有问题,无法通过验证。

比如最近 2021 年 9 月 30 日,Let’s Encrypt 组织使用的 IdentTrust DST Root CA X3 根证书过期,因此很多使用了 Let’s Encrypt 签发的证书但没有及时更新证书的网站都受到了影响。

  • 解决:在 git clone 时不启用证书验证:
代码语言:javascript
复制
GIT_SSL_NO_VERIFY="true" git clone xxx
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-10-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. remote:error:File:××× exceeds 100.00 MB. ⋯\cdots⋯ remote:Please remove the file from history and try again.
  • 2. fatal: unable to checkout working tree. warning: Clone succeeded, but checkout failed.
  • 3. fetch-pack: unexpected disconnect while reading sideband packet
  • 4. fatal: unable to access 'xxx': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档