git上有人提交了垃圾大文件,导致git拉取非常慢
单纯的删除文件并提交git是没用的,因为提交记录会一直存在(也是git强大的一个地方,随时可以回滚代码)
1、查一下当前git checkout出来的代码,有没有大文件,有的话通过git rm删除再提交,不再多说
2、主要是删除commit记录里的大文件。
第一步>确保本地仓库是最新版本。
第二步>在项目根目录下运行
git rev-list --all | xargs -rL1 git ls-tree -r --long | sort -uk3 | sort -rnk4 | head -10
列出所有仓库中的对象(包括SHA值、大小、路径等),并按照大小降序排列,列出TOP 10。
第三步>删除本地commit记录
git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch {path-to-your-remove-file}' --prune-empty --tag-name-filter cat -- --all
第四步>Git仓库历史有个缓存期,如果不主动回收、清理仓库历史,一般的这些记录还会保存一段时间,以备你突然后悔了,没办法找回删掉的文件。那么怎么样才能主动回收资源能?就是通过以下命令:
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now
执行以上命令,就会发现.git目录变小了。那么接下来只要把本地的记录,强制更新到远程仓库就行了。
第五步>把本地的记录,强制更新到远程仓库
git push origin master --force #其中master为你要推送的分支
注意的地方,如果有基于当前分支拉取新分支的情况,要checkout到相应分支,执行git push origin {分支} --force 或者是强制执行
git push --force --all #不建议
重要:
整理完仓库以后通知其他同时重新拉取最新代码,别把他们自己电脑上的commit记录再提交上去了。
不要通过git上传垃圾大文件,采用其他方式把临时文件上传到生产环境。