git删除大文件历史记录

在首次提交git仓库或是平时提交git仓库时,可能会不小心把比较大的文件不小心提交了,导致其他人克隆版本或者更新的时候非常慢、甚至卡死;而且即便是把本地的大文件删除并提交了,git的历史记录依然存在,这么做的理由当然是让你能把误删除的文件从某一版本恢复回来,但在前面说的情况下,这个特性是多余的;这个特性我们无法改变,所以只能从其他途径删除这些误提交的文件。

通常这些文件的记录会保存在:.git\objects\pack下,我们无法修改它,但可以通过某些清理工具进行清理。



注意:需要提前装好官方出品的git客户端软件

工具

2.1下载

本次清理采用BFG Repo-Cleaner这个小工具,这个工具只是一个jar包,可以从官网下载:

https://rtyley.github.io/bfg-repo-cleaner/

2.2使用

下载下来的jar包并不需要安装,将其放在某个目录下,例如:

D:\work\git\目录下

随后在该目录下执行git命令,把git仓库下载到该目录,命令如下:

git clone -b 分支号--mirror 你的git仓库路径\xxxx.git

完成后再本地会生成一个以xxxx.git命名的目录。需要注意的是,该目录并不是真正的仓库目录,它仅是仓库的版本控制目录,内容类似:

2.3标记

随后继续在示例目录D:\work\git\下进行操作。

在该目录下执行标记命令,移除不想要的文件,以下是示例命令:

2.3.1.删除所有大于10M的文件

java  -jar bfg-1.13.0.jar --strip-blobs-bigger-than 10M xxxx.git

 

2.3.2.删除所有名为target的目录

java  -jar bfg-1.13.0.jar --delete-folders target --no-blob-protection  xxxx.git

 

2.3.3.删除所有以.class结尾的文件

java  -jar bfg-1.13.0.jar --delete-files .class --no-blob-protection  xxxx.git

 注意:最新的bfg要1.8以上jdk才能支持

2.4删除

完成2.3的操作后,需要进入2.2步骤建立的xxxx.git目录下,随后执行命令清除刚才找到的文件(实际上2.3步骤仅是找到需要删除的文件并标记,本步骤才是删除),清理命令:

cd D:\work\git\xxxx.git

git reflog expire --expire=now --all&& git gc --prune=now --aggressive

最后,执行push命令即可:

git push

说明

Bfg的详细使用可以参考官网说明: https://rtyley.github.io/bfg-repo-cleaner/。官网首页有简单的示例介绍。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值