git删除历史提交记录中的文件


由于项目中每次都会提交上去jar包,导致仓库体积越来越大,删除掉历史的没用的文件

经过删除,仓库由 3.3G 变为 1.1G

查看占用

git rev-list --objects --all | git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | sed -n 's/^blob //p' | sort --numeric-sort --key=2 | cut -c 1-12,41- | $(command -v gnumfmt || echo numfmt) --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest

按占用大小排序,可以看到jar的commit SHA值,然后我们要查找调用target/demo-1.1.1.jar的提交记录
在这里插入图片描述

查找提交记录

git log --pretty=oneline --branches -- target/demo-1.1.1.jar

在这里插入图片描述
比如我们要删除上线之后所有的提交记录,那么就需要找到上线的SHA值前几位,输入以下

git filter-branch --index-filter 'git rm --cached --ignore-unmatch target/demo-1.1.1.jar' -- 0292b33df8abb217^..

执行过程:
在这里插入图片描述

删除ref中的引用

rm -Rf .git/refs/original
rm -Rf .git/logs/

执行gc回收

git gc

在这里插入图片描述

强制推送至远程

git push --force

到此远端及本地的仓库已瘦身完成,还需要所有该项目的开发人员重新clone一下仓库,避免将历史commit文件重新提交到远程


参考文章
https://cloud.tencent.com/developer/article/1798408
https://www.cnblogs.com/fuhua/p/15527023.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZHAIKEsir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值