git删除commit的历史大文件记录

前言:

git上有人提交了垃圾大文件,导致git拉取非常慢

单纯的删除文件并提交git是没用的,因为提交记录会一直存在(也是git强大的一个地方,随时可以回滚代码)

一、查一下当前git checkout出来的代码有没有大文件,有的话通过git rm删除再提交,不再多说

二、主要是删除commit记录里的大文件

 
第1步:确保本地仓库是最新版本。

让大家把本地的代码都提交好,由某个人单独来操作。 


第2步:在项目根目录下运行:

git rev-list --all | xargs -rL1 git ls-tree -r --long | sort -uk3 | sort -rnk4 | head -10

这将列出所有仓库中的对象(包括SHA值、大小、路径等),并按照大小降序排列,列出TOP 10。

第3步:删除本地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

在{path-to-your-remove-file}分次填入你需要删除的文件相对路径

第4步:Git仓库历史更新

 Git仓库历史有个缓存期,如果不主动回收、清理仓库历史,一般的这些记录还会保存一段时间,以备你突然后悔了,没办法找回删掉的文件。那么怎么样才能主动回收资源能?就是通过以下命令:

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

执行以上命令,就会发现.git目录变小了。那么接下来只要把本地的记录,强制更新到远程仓库就行了。

第5步:把本地的记录,强制更新到远程仓库

git push origin master --force       #其中master为你要推送的分支

重要提醒:
在进行整理仓库前让大家都把本地需要提交的都Push上去,由某个人单独来执行整理仓库,整理完仓库以后通知其他同时重新拉取最新代码(因为有合并的话又会把commit记录再提交上去了)。

不要通过git上传垃圾大文件,采用其他方式把临时文件上传到生产环境。

你可能感兴趣的:(git,github)