git 删除大文件

当进行项目开发时,尤其是一些机器学习的项目,由于前期没有配置.gitignore,导致会把一些数据集上传到git上导致其他人拉取代码时会比较耗时,以下步骤是对此问题的解决:

1、查看仓库的大小

git count-objects -v

结果(size-pack为仓库大小)

count: 0
size: 0
in-pack: 120
packs: 1
size-pack: 36429
prune-packable: 0
garbage: 0
size-garbage: 0

2、找出大文件

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

其中"tail -20"中的20表示条数。

3、删除大文件

git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch xxx.framework' --prune-empty --tag-name-filter cat -- --all

其中”xxx.framework“是上一步中列出的大文件路径。

4、push 到远程

git push origin --force --all

5、清除缓存

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

ok了

如果担心以后仍会出现此问题,建议配置.gitignore文件

你可能感兴趣的:(git 删除大文件)