git 删除大文件

背景

目前看下来是,如果给 git 仓库提交大文件(具体多大算大,暂时还没有查到,我本地试 300M 的文件会有问题),则会在 .git\objects\pack 中有一个比较大的文件。提交了 300 M 的文件,这个缓存文件大概 70M 左右。
网上常用的方式是,使用 git-filter-repo 删除大文件。

操作过程

1.使用 python 的 pip 下载 git-filter-repo

pip install git-filter-repo

2.如果不知道哪个文件比较大,还需要找一下(这个步骤还没有试过,可以看参考文献)

下面命令本地没有试过

git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"

3.找到比较大的文件后,从 .git 中删除

git filter-repo --invert-paths --path effect.pdb --force

如果你本条 commit 只包含这个大文件,则会删除 commit。如果该 commit 包含提起的提交,则删除大文件,其他修改保留。

3.1 我本地执行上面的命令后,执行 git push 提示找不到远端仓库

我这边需要重新添加远程仓库,我看文献里面没有这个步骤,不知道是不是我这边什么配置导致的。

git remote add origin git@xxx.git

4. 把改动提交到远端

git push origin xx --force

5.其他

下次下载这个仓库,.git 里面就不会包含这个缓存文件了。
但是之前已经下载的仓库里面还保留这个文件,可以本地执行下面的命令把本地缓存清了。

rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now

参考文献

文章:记录删除.git记录大文件的过程
视频:别再往 git 提交大文件啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值