当前位置:   article > 正文

git 删除大文件_git如何删除大文件记录

git如何删除大文件记录

背景

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

操作过程

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

pip install git-filter-repo
  • 1

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

下面命令本地没有试过

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

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

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

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

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

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

git remote add origin git@xxx.git
  • 1

4. 把改动提交到远端

git push origin xx --force
  • 1

5.其他

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

rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
  • 1
  • 2
  • 3

参考文献

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/601506
推荐阅读
相关标签
  

闽ICP备14008679号