git 如何不push超大的文件

本文介绍了如何在Git中排除已提交的大文件或目录,并提供了详细的步骤来帮助读者从版本库中移除这些文件,确保后续的push操作能够顺利完成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[Git] 如何不push超大的文件

Author: Xin Pan

Date: 2020.12.10


如果超大的文件还没有被commit 进local_repo:

git add .

以后写.gitignore或者.git/info/exclude完成路径的隔离或者说忽略。

再去commit 之后push

如果超大的文件还已经被commit 进local_repo:

那么使用如下命令

git filter-branch -f --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch FILE_OR_DIR_NEED_IGNORE' --tag-name-filter cat -- --all

将FILE_OR_DIR_NEED_IGNORE 更改为自己的文件夹或文件就可以了。这里边注意需要在运行命令的时候和.git在同一个目录,另外FILE_OR_DIR_NEED_IGNORE支持通配符*。

今天一下午都在处理这个问题,最后总结一下给自己一个交代也算是。

### 处理Git推送大文件时遇到的问题及解决方案 当尝试向Git仓库推送包含超大文件(如WAR包)时,可能会遭遇“文件大小超过限制”的错误。为了成功推送到远程仓库,需要从Git历史记录中彻底移除这些大型文件。 #### 定位并清理问题文件 对于已经存在于版本库中的大文件,可以通过`git filter-branch`命令来清除它们的影响: ```bash git filter-branch --force --index-filter \ 'git rm --cached --ignore-unmatch 文件路径' \ --prune-empty --tag-name-filter cat -- --all [^1] ``` 上述命令会遍历整个交历史,并从中删除指定的大文件影响工作区内的实际文件。注意替换其中的“文件路径”为具体的目标文件位置。 #### 更新引用和压缩数据库 完成过滤之后,还需要更新所有的标签以及缩小.git目录下的对象存储空间: ```bash git push origin --force --all # 强制覆盖远端所有分支 git push origin --force --tags # 强制上传所有标签 rm -rf .git/refs/original # 移除旧的历史数据残留 git reflog expire --expire=now --all # 清理reflogs git gc --aggressive # 执行垃圾回收优化 git prune # 删除无用的对象 ``` 以上步骤确保了仅当前的工作副本被修正,而且也同步修改了服务器上的历史记录,从而解决了由于存在过大单个文件而导致无法正常推送的情况[^1]。 #### 使用LFS替代传统方式管理大文件 如果经常需要处理较大规模的数据集或其他类型的二进制资源,则建议采用Git LFS (Large File Storage),这是一种专用于跟踪大文件变化的技术扩展。安装配置好后,只需简单声明哪些模式应该由LFS负责即可自动转换成轻量级指针文件存入常规Git仓库内,而真正的内容则托管于专门设计的支持服务上[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值