git 大文件 已提交,无法推送,以及 大文件推送GC错误 解决办法

  • 第一个错误  记录,有大文件在提交, 让查看,网上让撤销,各种办法都无法处理

顺便 大文件查看  大小     du -d 1 -h 

 

remote: Resolving deltas: 100% (59/59), completed with 22 local objects.

remote: Powered by GITEE.COM [GNK-5.0]

remote: error: File: 31ae228f5bec1e51095623503a7a8c5314fc6ba8 371.87 MB, exceeds 100.00 MB.

remote: Use command below to see the filename:

remote: git rev-list --objects --all | grep 31ae228f5bec1e51095623503a7a8c5314fc6ba8

remote: Please remove the file from history and try again. (https://gitee.com/help/articles/4232)

To gitee.com:***********.git

! [remote rejected] master -> master (pre-receive hook declined)

error: failed to push some refs to 'git@gitee.com:************.git'

 

git rev-list --objects --all | grep 8f10eff91bb6aa2de1f5d096ee2e1687b0eab007

 

git rev-list --objects --all | grep 31ae228f5bec1e51095623503a7a8c5314fc6ba8

 

git filter-branch --index-filter 'git rm --cached --ignore-unmatch .tags_sorted_by_file'

git filter-branch --index-filter 'git rm --cached --ignore-unmatch .tags_sorted_by_file' -f

rm -rf .git/refs/original/ git reflog expire --expire=now --all git fsck --full --unreachable git repack -A -d git gc --aggressive --prune=now git push --force [remote] master

说什么 删除提交 记录,都无法进行处理。

正确处理办法:  在git记录中找到,然后 git clone  ,找到对应的.git 目录  把新的.git目录 覆盖到 有代码部分的.git目录。正常提交就可以。

  • 第二个问题 也是大文件的问题, 天天发生问题,今天处理git 这个问题 整整折腾了两个小时,做一下记录。 
Pushing to git@gitee.com:ding-yonghong/php-shipu.git

remote: Powered by [01;33mGITEE.COM [0m[[01;35mGNK-5.0[0m][0m

remote: This repository(including wiki) size [01;31m1811.88 MB[0m, exceeds [01;31m1024.00 MB[0m.

remote: Push rejected for repository [01;31msize exceeds limit[0m.

remote: HelpLink: [01;33mhttps://gitee.com/help/articles/4232[0m

remote: Repository GC: https://gitee.com/************/settings#git-gc

remote: Enterprise Edition: https://gitee.com/enterprises#commerces

To git@gitee.com:************.git

! [remote rejected] master -> master (pre-receive hook declined)

error: failed to push some refs to 'git@gitee.com:************.git'

正确处理办法:在gitee中,项目管理中,进行GC操作。相应问题得到处理

 

 

### 解决 Git 拉取大文件的问题 当处理大型文件时,Git 可能会遇到性能瓶颈或直接拒绝操作。为了有效管理这些情况,建议采用以下几种方法: #### 使用 LFS(Large File Storage) 对于超过一定大小的文件,推荐使用 Git 的 Large File Storage (LFS) 功能来代替标准的 Git blob 存储方式。这允许版本控制系统只跟踪指向实际数据的小型指针文件而不是整个二进制对象本身。 安装并配置 Git LFS 后,在尝试拉取包含大文件的历史记录之前执行如下命令[^1]: ```bash git lfs install ``` 接着可以通过指定路径模式追踪特定类型的大型资源文件: ```bash git lfs track "*.psd" ``` 最后推送更新后的 `.gitattributes` 文件至服务器端以便其他协作者也能应用相同的设置。 #### 调整网络超时参数 有时由于网络连接不稳定或者速度较慢也会造成无法成功获取远端仓库中的内容。此时可适当增加 `http.postBuffer` 和 `http.lowSpeedLimit` 参数值以延长等待时间窗口从而提高成功率[^2]: ```bash git config --global http.postBuffer 524288000 git config --global http.lowSpeedLimit 1000 git config --global http.lowSpeedTime 60 ``` 上述配置分别设置了 POST 请求的最大缓冲区为 500MB ,以及定义了一个低速阈值触发条件即连续一分钟内传输速率低于每秒一千字节就会被认定为失败进而重试下载过程。 #### 分批提取历史记录 如果项目历史悠久且存在大量提交涉及到了很多不同阶段产生的庞大附件,则可以选择仅检出最近一段时间内的变更集而非全部历史记录。通过浅克隆的方式减少初始同步所需的数据量: ```bash git clone --depth=1 https://example.com/repo.git cd repo # 需要完整历史时再加深深度 git fetch --unshallow ``` 这种方式特别适合初次加入新团队成员快速启动工作环境而不必关心早期遗留下来的冗余资料的情况。 #### 定期清理不必要的对象 长期运行的工作副本可能会积累不少无用的对象缓存占用磁盘空间影响效率。定期执行垃圾回收可以帮助释放这部分资源保持最佳状态: ```bash git gc --aggressive --prune=now ``` 该指令不仅压缩了数据库还清除了那些不再使用的松散包文件确保本地存储始终处于精简高效的状态之中。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PHP代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值