大家使用git不知道有没有一个习惯,基本就是 一套 df 二连 素质三连:
1 git add . 2 git commit -m 3 git pull 4 git push
拉闸,不小心commit了超过10M的文件,拉闸。 出现了一个错误。
’The size of file ‘xxx‘ has exceeded the upper limited size (10 MB) in commit
意思就是我们commit超过10MB的文件无法提交。 (git 可以修改这个上限,自己去百度,好像上限是50MB)
这时候不小心将一个很大的文件添加到库中,即使删除,记录中还是保存了这个文件。以后不管是拷贝,还是push/pull都比较麻烦,尤其是在做CI时的耗时很痛苦。
方法:
1、若知道你的大文件是什么类型的,比如.gz或者.jar等,可以删除匹配xxx的所有文件:比如我很明显就提示我是xxx.jar 太大了。 因为我打了整个项目的jar包,接近100MB肯定大
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch *.gz' --prune-empty --tag-name-filter cat -- --all
2、若不知道,想查看下目前git库中有哪些大文件,可以用底层命令verify-pack识别出大对象:
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch 对象path' --prune-empty --tag-name-filter cat -- --all
3、释放空间
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now
4、把修改强制推送到远端
git push origin --force --all
搞定
网友评论