Git 彻底清理大文件

前言

因为错误的操作,git commit 历史里存在未进行任何额外操作的大文件,使得后续的大文件上传,以及普通文件的上传都失败了,始终提示:

remote: error: File src.zip is 210.35 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: GH001: Large files detected. 

因此必须彻底删除历史中的大文件。

1.安装git-filter-repo

pip install git-filter-repo

提示没有pip就按照提示先安装pip

2.将 git-filter-repo 添加到系统路径

确认安装路径

ls ~/.local/bin/git-filter-repo

如 /home/ubuntu20/.local/bin/git-filter-repo,再执行(不同路径请对照做相应的修改

echo 'export PATH="/home/ubuntu20/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.profile
source ~/.profile

测试命令是否可用

git-filter-repo --version 

3. 删除

回到有.git 的工作空间,执行

git filter-repo --path 大文件完整名称 --invert-paths --force

检查清理效果

git log --all --full-history -- src.zip  # 应该无输出
### 使用 Git LFS 管理大文件 Git LFS(Large File Storage)是一种专门用于管理大文件的扩展工具,它通过将大文件存储在远程服务器上,而本地仅保留指针文件的方式,显著减小 `.git` 文件夹的体积。此方法特别适用于 Unity 项目等需要包含大体积素材文件的场景[^1]。使用 Git LFS 的基本流程如下: ```bash git lfs install git lfs track "*.bin" git add .gitattributes git commit -m "Track large files with Git LFS" git push origin main ``` 此流程将启用 Git LFS 并跟踪所有 `.bin` 文件,随后提交并推送更改,从而有效解决大文件存储问题,同时避免 `.git` 文件夹过大导致的提交失败[^1]。 ### 使用 `git filter-branch` 删除特定大文件 如果仓库中存在已知路径的大文件,并且希望从历史记录中彻底删除这些文件,可以使用 `git filter-branch` 命令: ```bash git filter-branch --tree-filter 'rm -f path/to/large/files' HEAD ``` 执行完此命令后,需进行垃圾回收并强制推送,以确保清理后的仓库被正确更新: ```bash git gc --prune=now git push origin --all --force ``` 这种方法适用于已知具体文件路径的情况,能够有效减小 `.git` 文件夹的大小[^3]。 ### 使用 BFG Repo-Cleaner 工具清理仓库 BFG Repo-Cleaner 是一个专门用于清理 Git 仓库中大文件的工具,使用方式如下: ```bash java -jar bfg-1.14.0.jar --strip-blobs-bigger-than 10M your-repo.git ``` 此命令会删除所有大于 10MB 的 blob 对象,从而减小 `.git` 文件夹的大小。清理完成后,需执行以下命令进行垃圾回收并强制推送: ```bash git reflog expire --expire=now --all git gc --prune=now --aggressive git push origin --all --force ``` 这将确保清理后的仓库被正确推送到远程仓库[^5]。 ### 使用 `git gc` 清理仓库 首先尝试使用 Git 自带的垃圾回收机制来压缩 `.git` 文件夹: ```bash git gc --prune=now ``` 该命令会清理不必要的对象并压缩 Git 仓库的大小。如果 `.git` 文件夹仍然过大,说明仓库中存在大文件的历史记录,这些文件即使被删除,其历史版本仍保留在 Git 中[^5]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值