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

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上传垃圾大文件,采用其他方式把临时文件上传到生产环境。
   

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值