如何清除Git历史变更记录

以前公司的一个项目代码,从2014年一直存活到了2021年,目前应该还在被使用。整个代码将近2G,git文件极大,其中很大的一个原因是代码里存放过apk文件。如此大的项目,导致下载、发布很困难。

最初打算创建一个新的远程仓库用来替换旧仓库,但是该项目涉及的位置和使用者太多。另外一个方案是删除apk的变更记录,项目也会变小很多。此处推荐一个工具,能够较快的删除Git的历史变更记录。

一、创建仓库

创建远程仓库,里面有README.md文件,做两次提交,分别提交数字1和数字2。如下图所示:

图片

图片

二、安装工具


这款工具名为bfg,官方地址为:https://rtyley.github.io/bfg-repo-cleaner/。

图片

先下载jar文件到本地:

wget https://repo1.maven.org/maven2/com/madgag/bfg/1.14.0/bfg-1.14.0.jar

如果没有Java,则需要进行安装:

apt install default-jre
java -v

为了方便执行,我们可以设置别名:

alias bfg='java -jar bfg-1.14.0.jar'

三、操作

1.删除文件

为了删除变更记录,需要先删除该文件。

图片

2.下载远程仓库

创建新的目录,将远程仓库下载下来

git clone --mirror git://example.com/some-big-repo.git
# git clone --mirror http://127.0.0.1:3000/shidawuhen/test.git

图片

3.删除指定文件

bfg --delete-files README.md test.git

通过日志能够看到删除情况:

图片

cd test.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive
git push

通过git历史,发现sha1值有变更,而且里面的改动已经消失了

图片

图片

四、总结


bfg的优势在于速度快,如果项目大是因为几个大文件导致的,大家可以用这种方案进行操作。

另外bfg的命令有很多,可以删除文件、可以根据文件大小等删除,我们可根据需求灵活使用。

资料

  1. 三种清除Git提交历史的方法

  2. [因累积太多无法提交到 github,如何清除历史变更记录?](https://segmentfault.com/q/1010000004996998)

  3. 官网

最后

大家如果喜欢我的文章,可以关注我的公众号(程序员麻辣烫)

我的个人博客为:https://shidawuhen.github.io/

往期文章回顾:

  1. 设计模式

  2. 招聘

  3. 思考

  4. 存储

  5. 算法系列

  6. 读书笔记

  7. 小工具

  8. 架构

  9. 网络

  10. Go语言

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员麻辣烫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值