当进行项目开发时,尤其是一些机器学习的项目,由于前期没有配置.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文件